2011-12-16 3 views
54

So che è buono, a volte di associare un'etichetta con una casella di controllo:È possibile associare l'etichetta alla casella di controllo senza utilizzare "for = id"?

<input id="something" type="checkbox" value="somevalue" /> 
<label for="something">this is label text</label> 

..ma posso ho ad utilizzare un ID per associare esso?
Il motivo principale che mi interessa è perché mi piace essere in grado di fare clic su un'etichetta per attivare il valore della casella di controllo, ma non mi piace l'idea di utilizzare un ID per qualcosa di così semplice.

Credo che avrei potuto utilizzare jQuery alternare l'elemento precedente (checkbox) di un'etichetta clic, ma forse c'è qualcosa di più semplice che mi manca. https://stackoverflow.com/a/2720771/923817 sembrava una soluzione, ma l'utente ha detto che non funziona in IE.

risposta

129

Sì, inserire l'input all'interno dell'etichetta.

<label><input type=checkbox name=chkbx1> Label here</label> 

Vedi implicit label association nelle specifiche HTML.

+3

+ 1 soluzione migliore: vedere le specifiche HTML per [associazione etichetta implicita] (http://www.w3.org/TR/html4/interact/forms.html#h -17.9.1). – SliverNinja

+3

funziona in IE? http://stackoverflow.com/a/2720771/923817 suggerisce che non è –

+3

Limitazione (secondo le specifiche): * Si noti che questa tecnica non può essere utilizzata quando una tabella viene utilizzata per il layout, con l'etichetta in una cella e il controllo associato in un'altra cella. * – SliverNinja

2
<label for="something">this is label text</label> 
<input id="something" type="checkbox" value="somevalue" /> 

in realtà l'attributo for è stato utilizzato per i lettori di schermo alle persone disabili, in modo da non è utile per l'accessibilità a scrivere, senza per l'attributo

+0

L'utilizzo di un input contenuto in un'etichetta non interferisce con gli screen reader a meno che non siano scritti male. È un caso di parsing piuttosto semplice. –

+0

@JoaoCarlos da https://www.w3.org/TR/2008/NOTE-WCAG20-TECHS-20081211/H44.html#ua2.18.1: "Le specifiche HTML e XHTML consentono sia etichette implicite che esplicite. le tecnologie assistive non gestiscono correttamente le etichette implicite (ad esempio, ). " –

+0

Non sono sicuro se questo è ancora un problema con i browser moderni + lettori di schermo però. –

3

Demo: JsFiddle

.c-custom-checkbox { 
 
    padding-left: 20px; 
 
    position: relative; 
 
    cursor: pointer; 
 
} 
 
.c-custom-checkbox input[type=checkbox] { 
 
    position: absolute; 
 
    opacity: 0; 
 
    overflow: hidden; 
 
    clip: rect(0 0 0 0); 
 
    height: 15px; 
 
    width: 15px; 
 
    padding: 0; 
 
    border: 0; 
 
    left: 0; 
 
} 
 
.c-custom-checkbox .c-custom-checkbox__img { 
 
    display: inline; 
 
    position: absolute; 
 
    left: 0; 
 
    width: 15px; 
 
    height: 15px; 
 
    background-image: none; 
 
    background-color: #fff; 
 
    color: #000; 
 
    border: 1px solid #333; 
 
    border-radius: 3px; 
 
    cursor: pointer; 
 
} 
 
.c-custom-checkbox input[type=checkbox]:checked + .c-custom-checkbox__img { 
 
    background-position: 0 0; 
 
    background-color: tomato; 
 
}
<label class="c-custom-checkbox"> 
 
    <input type="checkbox" id="valueCheck" /> 
 
    <i class="c-custom-checkbox__img"></i>Some Label 
 
</label>

Problemi correlati