Bir giriş alanının iki etiketi olabilir mi?


134

Mary'nin küçük bir formu vardı ve alanları da öyle etiketlenmişti.
Ne zaman bir hata ortaya çıksa, kafa karışıklığı ekerdi.

Her giriş alanı için bir etiketim var ... oldukça standart bir ilişki. Formu doğruladıktan sonra, formun üst kısmında hangi bilgilerin eksik veya yanlış olduğunu detaylandıran yararlı küçük bir paragraf gösteriyorum.

Aynı giriş alanı için iki etiketim olabilir mi? Biri uygun biçimde ve diğeri doğrulama hatırlatma metninde mi? Bunu yapmamam için herhangi bir sebep var mı?


Ne olacağını denedin mi? Çalışırsa formunuza veya sayfaya herhangi bir zarar vereceğine inanmıyorum. Ve bir artı elde edeceksiniz çünkü kullanım doğrulama hatasını tıklayıp doğru alana odaklanabilecektir.
Felipe Cypriano

Denemedim ama sanırım mümkün olacak. Ancak bunu kullanmanızı önermiyorum, çünkü bir etiket alanın ne için olduğunu tanımlar, bir hata mesajı vermez. Bu yüzden uyarıları doğrulamak için bir etiket kullanmamalıyım.
Guido Hendriks

1
Bu genel bir UI tasarımı / kullanılabilirlik sorusu mu?
jball

Evet. "Çalışıyor" ... ama bunun kötü tasarım olmasının bir nedeni var mı? Erişilebilirlik nedeniyle olabileceğini tahmin ediyorum, ancak normal bir kullanıcı için hata mesajına tıklayıp dağınık alana götürülmenin işleri kolaylaştıracağını düşünüyorum ... Sadece olacak mı bilmiyorum "görme engelliler için okuyucuları" vb. karıştırmak.
aslum

1
Bazı durumlarda, kontrolünüzü ve metninizi bir tanesine koymak daha kolaydır label. Hatta forve idniteliklerini atlayabilirsiniz . Özellikleri bu açık ilişki çağırır.
rybo111

Yanıtlar:


158

Sanırım bu soru HTML formları hakkında. Gönderen şartname :

LABEL öğesi, kontrollere bilgi eklemek için kullanılabilir. Her LABEL öğesi, tam olarak bir form denetimiyle ilişkilendirilir.

Bu nedenle, her bir form kontrolüne birden fazla etiketle referans verilebilir, ancak her etiket yalnızca bir kontrole referans verebilir. Dolayısıyla, bir kontrol için ikinci bir etiketin olması mantıklıysa (ve tanımladığınız durumda, olur) ikinci bir etiket eklemekten çekinmeyin.


2
Gerçekten HTML'den çok bir kullanılabilirlik / erişilebilirlik sorusudur. Html çalışır.
aslum

2
Hepimiz yalnızca geçerli kod kullanmalıyız, aksi takdirde gelecekte veya bir başkası için veya bir JS kitaplığı veya her neyse işler bozulabilir.
SHernandez

1
Doğru cevap Rob'un. Bu çözüm gören kullanıcılar için çalışır ve bazı ekran okuyucularda başarısız olur. Aslum, sanırım Rob cevabını göndermeden önce yukarıdaki jsummers'ın cevabını kabul etmişsin.
cage rattler

3
@AvramLavinsky hayır, bu "bir alanın iki etiketi olabilir mi?" Sorusunun doğru yanıtıdır. Spesifikasyon oldukça açık. Müşterilerin bunu nasıl yorumlamayı seçtiği onlara bağlıdır. "Aria-labeledby" ile bağlantılı olan "aria-descriptionby" bağlantınız, bozuk ekran okuyucularını "düzeltmenin" yoludur.
James Sumners

Komik MDN, "Bir giriş birden çok etiketle ilişkilendirilebilir" diyor. developer.mozilla.org/en-US/docs/Web/HTML/Element/label
2540625

40

HTML yasaldır ve çalışır (etiketlerin herhangi birine tıklamak, odağı söz konusu alana aktarır).

Erişilebilirlik nedeniyle doğru yapmak biraz daha yanıltıcıdır.

Bu "yaygın" bir yaklaşım değildir ve bu nedenle en az bir ortak ekran okuyucu (NVDA ile test ettim), odağı alana kaydırdığınızda yalnızca ilk etiketi okur - aynı alan için ek etiketleri yok sayar.

Dolayısıyla, hata mesajınız sayfanın üst kısmındaysa, alanlar arasında gezinen görme engelli veya görme bozukluğu olan bir kullanıcı, söz konusu alana inerken yanındaki "gerçek" etiketi değil, yalnızca hata mesajını duyacaktır.

Bu nedenle - hata mesajını doğru bir şekilde ifade ederseniz, bu iyi bir şey olabilir (kesinlikle onaylanmamış alanı kırmızıyla vurgulamaktan daha iyidir!).


1
Bu doğrudur ve bunu kodlamanın doğru yolu aria-
tanımlı

27

Evet, aynı form denetimini gösteren birden çok etiketiniz olabilir. Bu tamamen yasaldır :

<label for="fname">First name</label>
<label for="fname">Enter your info</label>
<label for="fname">Why not a third label</label>
<input type="text" id="fname" name="fname">

Bu sadece bir örnek ... normalde yakın olduklarından bu satırları tek bir etiketle sararsınız.


13
" Öznitelik LABELaracılığıyla birden fazla referans oluşturularak aynı denetimle birden fazla ilişkilendirilebilir " ifadesinin açıkça belirtildiği dokümanın bağlantısı için +1 for.
alexg
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.