Autor Zpráva
xlifer
Profil
Který zápis je správně, když fungují oba?

Význam uvádět for= mi přijde asi vhodné, pokud bude někde jinde v textu a nebude uvnitř uzavřen přímo prvek na který se label odkazuje, je tak?

<label>
Policko: <input type="text" name="test" value="1">
</label>

<label for="policko">
Policko: <input type="text" name="test" value="1" id="policko">
</label>
Keeehi
Profil
A http://www.w3.org/TR/html4/interact/forms.html#edef-LABEL ti nestačí? Stačilo kliknout na odkaz, který se ti v kódu vytvořil.
xlifer
Profil
W3.org jsem již prohlížel, ale šlo mi o potvrzení zda jsem dobře pochopil výklad...
panther
Profil
xlifer:
myslím, že třetí úryvek kódu, kde jsou inputy zanořené do labelu, je výstižný dostatečně (nevím, jestli jsi náhodou neskončil u psaného výkladu a nezapomněl sjet k příkladům… možnost by to byla).
Trejpa
Profil
xlifer:
Ano, běžně se obalující label používá i bez atributu for. Kdysi jsem psal Yuhůovi, aby si tento způsob zápisu doplnil, ale tehdy byl ještě velmi rozšířen prohlížeč, který to nepodporoval. Dnes bych se toho nebál.
joe
Profil
Druhý zápis nikdy nepoužívej. Buď vnořený input do labelu bez for a nebo label s for před inputem (který není vnořen).

Pokud bys to tak neudělal, nedostaneš funkční řešení ve všech prohlížečích.
panther
Profil
joe:
Pokud bys to tak neudělal, nedostaneš funkční řešení ve všech prohlížečích.
nemám čas si s tím teď hrát, zároveň neříkám, že nemůžeš mít pravdu. Mohl bys, prosím, své tvrzení podložit konkrétními informacemi, tedy uvést prohlížeč, ve kterém by tento zápis nefungoval?
Trejpa
Profil
joe:
Připojuji se k pantherovi se žádostí o prohlížeč, který to nebere.

Pár let nazpět jsem label testoval na dostupných prohlížečích pro Windows. Jediný problém nastal právě naopak (tuším v IE6), když label se zanořeným inputem atribut for neobsahoval – potom prohlížeč funkci labelu ignoroval. Proto jsem tenkrát atribut for doporučoval jako nutnost i pro obalujícího label.
joe
Profil
Tak tomu nerozumím a teď abych z toho nějak vybruslil. Zkoušel jsem nasimulovat problém a nedaří se mi to, nechápu. Problém byl takový:

Po stisku tlačítka myši nad labelem dostal příslušný input focus a po uvolnění tlačítka ho opět ztratil, nicméně jsem to teď vyzkoušel v každém prohlížeči a zdá se, že to funguje jak má. Pro mě nepochopitelné, zvlášť když ještě před pár dny jsem takový problém měl a přepisoval jsem to :-) Bohužel už nevím v jakém to bylo prohlížeči, ale tuším, že to byl buď Firefox a nebo IE.

Ale až na ten problém narazím, vzpomenu si.
Dranel
Profil
No, nic proti vašim zvyklostem, ale mě přijde input vložený do labelu jako absolutní zhovadilost. To ten label potom vlastně nic nepopisuje a je tam úplně zbytečný, ne? Osobně používám níže uvedení řešení, které mi přijde nejvíce logické (a tedy i nejlepší).

<label for='jmeno'>Jméno</label>
<input type='text' id='jmeno' name='jmeno'>


Tedy přesně tak, jak to má (dle mě) být - popisek pole a k němu se vztahující pole, nebo chcete-li naopak - pole a k němu se vztahující popisek.
Timy
Profil
Dranel:
Logické možná, ale psaní toho for="" a id="" mě vždycky otravovalo, obalit input labelem je jednodušší. Horší je, že to nefunguje v IE6.
Trejpa
Profil
Dranel:
No, nic proti vašim zvyklostem, ale mě přijde input vložený do labelu jako absolutní zhovadilost.
Že to ty takto nepoužíváš nebo neumíš používat, je tvůj problém. Není třeba to vyvracet jiným.

To ten label potom vlastně nic nepopisuje a je tam úplně zbytečný, ne?
Popisuje formulářovou položku v sobě obsaženou.
Pro uživatele stránky není rozhodující popisná funkce (kterou toto řešení má), ale fakt, že kliknutím na popisek se formulářový prvek použije.

Osobně používám níže uvedení řešení, které mi přijde nejvíce logické (a tedy i nejlepší).
Osobně mi přijde jako naprosto nelogické přiřazovat každé dvojici popisku a políčka for a id, když to jde bez nich.



Popisek label byl už při svém vzniku definován tak, aby ho bylo možno použít kterýmkoliv z uvedených způsobů. Prohlížeče (kromě výjimky na kterou jsem narazil) oba podporují. Netřeba hledat, který zápis je lepší, oba jsou rovnocenné.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0