2011-09-07 12 views
15

Mi hanno alcune etichette come:Come posso cambiare il colore di <label> quando il suo ingresso è disabilitato?

<label> 
    <input type="checkbox" name="the_name" id="the_name" /> Label text 
    </label> 

che a volte sono disabili

$("#the_name").prop('disabled', true); 

Nessun problema, ma vorrei cambiare etichetta di colore del testo per renderlo più visibile. È possibile utilizzare Jquery e/o CSS?

+0

Purtroppo non è possibile in CSS. –

risposta

9

è possibile aggiungere una regola CSS per l'etichetta selezionando il genitore di vostro input e aggiungendo che, al momento si disattiva il controllo

$("#the_name").prop('disabled', true).parent().css({backgroundColor:'#fcc'}); 

Inoltre, credo che l'etichetta è destinata ad essere usa così:

<label for="the_id">Label text</label> 
<input type="checkbox" name="the_name" id="the_id" /> 

dove attributo dell'etichetta for corrisponde alla id del controllo target

nel qual caso è possibile selezionare l'etichetta da esso è for attributo e applicare css, come si vede in forma - qualcosa di simile:

$("#the_id").prop('disabled', true); 
$('label[for=the_id]').css({backgroundColor:'#fcc'}); 

See violino per demo: http://jsfiddle.net/bq52X/

+1

Va bene avere il '' all'interno di '

+4

@ PaulD.Waite: Siamo spiacenti, ma non è corretto. L'uso di 'input' all'interno di tag' label' significa che non è necessario specificare attributi 'for' ed è in realtà il modo preferito per specificare etichette cliccabili. Vedi [questo post] (http: // StackOverflow.it/questions/6293588/how-to-create-an-html-checkbox-with-a-clickable-label/6293626 # 6293626) per una spiegazione dettagliata. –

+0

Beh ogni giorno è un giorno di scuola. Non sapevo che potevi rinunciare all'attributo 'for'. –

2

Sì, se si vogliono rendere il testo dell'etichetta di input disabilitato di un colore diverso, quindi è possibile aggiungere una classe css al tag <label>.

$("#the_name").prop('disabled', true).parent('label').addClass('disabled-label'); 

Quindi è possibile controllare lo stile tramite il foglio di stile anziché nel file di script o nel file html.

Considerare di non avvolgere l'input all'interno del tag dell'etichetta sebbene ritenga che ciò dia un maggiore controllo sugli stili.

0

Una possibilità:

$("#the_name").parent('label').css('color','silver'); 
14

Questo può essere fatto in CSS, ma solo quando l'etichetta viene dopo il tag input. Per esempio:

HTML:

<input id="someinput" type="text" /><label for="someinput">Type text:</label> 

CSS:

input[disabled] + label { *whatever style you want when input is disabled* } ; 
+1

Assicurati di rivelare quali browser supportano questo tipo di css (non tutti lo fanno) –

1

non ho sentito nessuno opacità:

.css('opacity', '0.5'); 
Problemi correlati