2012-05-21 19 views

risposta

15

è necessario disabilitare la casella di controllo anche:

<input type="checkbox" onclick="return false;" disabled="disabled"> 

Per pubblicare il valore, è sufficiente farlo in sola lettura, invece:

<input type="checkbox" onclick="return false;" readonly="readonly"> 

si può etichettare casella stile e gli ingressi di sola lettura con i CSS, ad esempio: input [readonly = "readonly"] {} ma il browser dovrebbe rendere la casella di controllo dovrebbe apparire in grigio quando impostato su readonly.

Aggiornato:

Tu sei in balia del browser quando lo styling caselle & per lo stile in modo coerente in tutti i browser, è necessario ricorrere alle immagini Es: http://ryanfait.com/resources/custom-checkboxes-and-radio-buttons/

se si don' t voglio fare questo (e sembra una soluzione longwinded), la soluzione più semplice è disabilitare la casella di controllo in modo che appaia correttamente e postare il valore come input nascosto ad esempio:

<input type="checkbox" onclick="return false;" disabled="disabled"> 
<input type="hidden" name="checkboxval" value="111" /> 
+0

colore: #aaaaaa; - Sì. Ho bisogno di qualcosa di simile. Ma in realtà questo non cambia comunque l'aspetto – Roman

+0

@Roman quale browser stai usando? La casella di controllo dovrebbe apparire in grigio solo impostando l'attributo readonly. Se vuoi che l'etichetta sia disattivata, imposta il css. Vedi questo: http: //jsfiddle.net/Btvpq/ – FluffyKitten

+0

"la casella di controllo stessa dovrebbe apparire in grigio solo impostando l'attributo readonly" - Provato in IE8, FF12.0, Chrome. Funziona solo su Chrome. – Roman

2

È sufficiente aggiungere l'attributo 'disabile' sulla casella di controllo come questo

<input type="checkbox" disabled="disabled" /> 
+0

non è necessario aggiungere l'attributo di onclick – Talha

4
<input type="checkbox" class="readonly"> 

Css

input.readonly { 
    opacity : .50; 
    filter : alpha(opacity=50); /* IE<9 */ 
    cursor : default; 
} 

js

$('input.readonly').on('click', function(evt) { 
    evt.preventDefault(); 
} 

Aggiungere una classe readonly all'elemento che si desidera grayout : via css imposta opacity e cambia lo stile di cursor. Quindi rimuovere inline javascript e impedire l'azione predefinita per gli elementi input.readonly all'evento click

+0

Questo funzionerà, ma una soluzione HTML puro è più semplice e preferibile - nessun requisito per il supporto javascript – FluffyKitten

+0

@FluffyKitten, js la parte è funzionalmente identica al codice OP, ma senza javascript in linea. – fcalderan

+0

opacità: .50; - non funziona in IE8 – Roman

0

Semplice, solo modo css per disattivare una casella di controllo disattivata.

input[type=checkbox][disabled] { 
    filter: invert(25%); 
} 
+1

Sì, questa è una possibile soluzione ora (non è stato quando è stato chiesto 5 anni fa). Tuttavia è importante notare che i filtri CSS non sono supportati in IE11 – FluffyKitten

Problemi correlati