2012-02-20 9 views
13

Chcę użyć nieokreślonej właściwości pola wyboru. Zmiana wartości w JavaScript działa we wszystkich rodzajach przeglądarek (nawet MSIE6!), Jednak nie mogę ustawić wartości początkowej za pomocą atrybutów HTML w dowolnych.HTML - Dlaczego indeterminate = "indeterminate | true" nie jest przestrzegane?

Czy jest to zgodne z projektem? Jeśli tak, dlaczego? Po stronie serwera mogę stwierdzić, że jest nieokreślony. Dlaczego nie mogę powiedzieć przeglądarce? Czy sprzedawcy przeglądarek nie martwili się o FOUC (Flashes Of Unstyled Content), jeśli długo trwający skrypt podtrzymuje ustawienie własności?

Oto przykład praca: http://jsfiddle.net/KUQC9/1/

+0

Co to jest "niezdeterminowana" właściwość? –

+0

@Rocket, spójrz na przykład roboczy. –

+1

Właśnie się o tym teraz uczę. Mam pytanie do ciebie, właściwie ... powiedziałeś, że możesz określić, że jest nieokreślony na serwerze: jak to robisz? (Nawiasem mówiąc, można w dużej mierze uniknąć FOUC przy użyciu zdarzenia ładowania DOM zamiast limitu czasu - http://jsfiddle.net/Cd35L/ - lub jeszcze szybciej - http://jsfiddle.net/dV3uL/) –

Odpowiedz

9

Nie można dokonać nieokreślony checkbox przez HTML projektem. Zobacz ten artykuł na temat css-tricks.com, który szczegółowo omawia temat.

chodzi o „dlaczego” części pytania, istnieją pewne informacje na temat W3C listach dyskusyjnych, które mogą być pomocne:

  • Wygląda jakby idea dawania wyboru wartości tri-state (pozornie zaznaczone, zaznaczona, nieokreślone) został uznany, ale nie zrealizowane z powodu zgodności wstecznej wystawia
  • Jedyna wzmianka o prawdziwej indeterminate HTML atrybutu „content”, jak można pokazać w swoim przykładzie, że znaleźliśmy się tutaj:

za to, co warto, to jest w rzeczywistości :indeterminate selektor CSS (wydaje się być traktowany jak inne CSS pseudo-klas, takich jak :visited, którego również nie można ustawić bezpośrednio za pomocą HTML, więc może to jest kolejny powód, dla którego indeterminate też nie może być). W wersji demonstracyjnej selektora CSS sam W3C używa tego samego podejścia, co Ty: W3C indeterminate CSS selector demo. W związku z tym powiedziałbym, że używasz najlepszej dostępnej metody ustawiania nieokreślonego stanu pola wyboru:

+2

Ten artykuł, ani jego komentarze, naprawdę omawiają dlaczego. –

+0

@ Olson.dev: Dodałem trochę informacji z list mailingowych W3C - zobacz moje zmiany. Mam nadzieję, że ma to dla ciebie jakąś wartość - powodzenia! –

+0

dzięki. Uważam, że te linki są pomocne w odniesieniu do "dlaczego" i oznaczono, że Twoja odpowiedź została przyjęta. Również +1. –

3

Jest to zgodne z projektem. Jedynym sposobem HTML oznaczenia stanu checkbox jest sprawdzany atrybut; dzieje się tak dlatego, że checkbox ma wartość true/false, a nie true/false/unknown. Oznaczenie czegoś nieokreślonego można wykonać za pomocą Javascript, ale nie zmieni to faktycznej/sumbitowanej wartości pola wyboru.

Jeśli naprawdę chcesz zainicjować pola wyboru w sposób nieokreślony, musisz to zrobić za pomocą Javascript (wyobrażam sobie, że na zdarzeniu ładowania).

+0

Dzięki za odpowiedź. Jednak nie powiedziałeś mi o wiele więcej, niż określiłem w pytaniu. Czyj projekt? Dlaczego tak jest? Rozumiem, że ma to być prawda/fałsz, ale nie jest nieznane, dlatego zaproponowałem 2 oddzielne atrybuty (jak poszczególne właściwości są oddzielne). Również mój przykład pracy już pokazuje inicjowanie ich za pomocą JavaScript. –

+0

Jest to projekt w3c (http://w3.org), ciała, które formalnie rozpoznaje/kodyfikuje/projektuje HTML. HTML (i XHTML i, o to chodzi, XML) to języki dokumentów, a nie języki programowania. Jeśli celem w dokumencie pola wyboru jest wskazanie opcji, która musi być prawdą lub fałszem, w jakim celu miałby atrybut opisujący tę wartość true/false jako nieznany serwer. – devstruck

+1

Syn a. . . zgodnie z wersją HTML5 z 16 lutego 2012 r. w3c, nieokreślony jest atrybutem elementu wejściowego. http://dev.w3.org/html5/spec/the-input-element.html#dom-input-indeterminate Początkowo nie można ustawić (na wartość true). – devstruck

Powiązane problemy