Sembra collegato a problemi di IE, vedere this e relativo (purtroppo non è possibile pubblicare più di 2 collegamenti). Il primo verrà corretto nella prossima versione di IE (Edge?). Il secondo è ancora aperto.
Come sospetto, il problema è che l'utente può ancora fare clic sugli input all'interno del campo disattivato e modificarli.
In tal caso, esiste una soluzione alternativa "css only" per IE 8+ che crea una sovrapposizione trasparente sopra il fieldset disattivato che impedisce di fare clic sul fieldset.
La soluzione alternativa è descritta nei problemi Microsoft Connect.
C'è fiddle, che dimostra una soluzione alternativa.
fieldset {
/* to set absolute position for :after content */
position: relative;
}
/* this will 'screen' all fieldset content from clicks */
fieldset[disabled]:after {
content: ' ';
position: absolute;
z-index: 1;
top: 0; right: 0; bottom: 0; left: 0;
/* i don't know... it was necessary to set background */
background: url(data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==);
}
La soluzione alternativa presenta alcune limitazioni, vedere il codice per i dettagli.
Ci sono alcune opzioni con JavaScript.
Sembra per IE9 + è possibile rilevare gli eventi mouse sul fieldset e chiamare e.preventDefault() se fieldset è disabilitato.
fieldset.onmousedown = function(e) {
if (!e) e = window.event;
if (fieldset.disabled) {
// for IE9+
if (e.preventDefault) {
e.preventDefault();
}
// for IE8-
else {
// actualy does not work
//e.returnValue = false;
}
return false;
}
}
per IE8 e sotto di essa è imposible per la cattura di ribollimento eventi MouseDown su disabilitato fieldset, gestori di eventi non ha nemmeno viene chiamato. Ma è possibile catturarli su antenati fieldset, su documetn.body per exampe. Ma ancora una volta, per IE8- non è possibile impedire che l'elemento venga focalizzato impedendo l'azione predefinita dell'evento di mouse. Vedi il biglietto jQuery # 10345 per i dettagli (mi dispiace, non posso pubblicare più di 2 link). Puoi provare a usare l'attributo UNSELECTABLE all'elemento non valido temporaneo per ottenere l'attenzione.Qualcosa di simile a questo:
document.body.onmousedown = function(e) {
if (!e) e = window.event;
var target = e.target || e.srcElement;
if (fieldset.contains(target) && fieldset.disabled) {
// no need to do this on body!!! do it on fieldset itself
/*if (e.preventDefault) {
e.preventDefault();
}
else {*/
// this is useless
//e.returnValue = false;
// but this works
fieldset.setAttribute("UNSELECTABLE", "on");
window.setTimeout(function() { target.setAttribute("UNSELECTABLE", ""); },4);
/*}*/
return false;
}
}
Il css funziona grande. Vorrei anche aggiungere un cursore non autorizzato sul fieldset disabilitato. fieldset [disabilitato] { cursore: non consentito; } – duyn9uyen
Grazie mille! Mi hai salvato la giornata. – tarekahf
'z-index: 1' è troppo piccolo quando si utilizza insieme a CSS di bootstrap. ad es. '.input-group.form-control' e molti altri stili sono posizionati su z-index 2, 3 e altro. funziona perfettamente con un 'z-index' di' 10' – girafi