Scheint, wie damit zusammenhängende Fragen zu IE, siehe this und damit verbundene (sorry, nicht mehr als 2 Links veröffentlichen können noch) nicht. Der erste wird in der nächsten großen IE-Version (Edge?) Behoben werden. Der zweite ist noch geöffnet.
Wie ich vermute, das Problem ist, dass Benutzer immer noch auf Eingaben innerhalb deaktiviert Feldset klicken und sie bearbeiten können.
Wenn ja, gibt es „css nur“ Abhilfe für IE 8+, die über deaktiviert Fieldset transparentes Overlay erstellt, die Fieldset aus angeklickt verhindert.
Die Problemumgehung wird in Microsoft Connect-Problemen beschrieben.
Es gibt fiddle, die Problemumgehung in Aktion zeigt.
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==);
}
Die Problemumgehung weist einige Einschränkungen auf, siehe Code für Details.
Es gibt einige Optionen mit JavaScript.
Scheint wie für IE9 + Sie mousedown- Ereignisse auf Fieldset und rufen e.preventDefault fangen kann(), wenn Fieldset deaktiviert ist.
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;
}
}
Für IE8 und darunter ist imposible auf deaktiviert Fieldset, Event-Handler nicht einmal aufgerufen wird, nicht sprudelnden mousedown- Ereignisse zu fangen. Aber es ist möglich, sie auf Fieldset-Vorfahren zu finden, beispielsweise auf documetn.body. Aber noch einmal, für IE8 können Sie nicht verhindern, dass das Element fokussiert wird, indem Sie die Standardaktion des Mousedown-Ereignisses verhindern. Einzelheiten finden Sie unter jQuery-Ticket # 10345 (mehr als 2 Links können nicht hochgeladen werden). Sie können versuchen, das Attribut UNSELECTABLE zu verwenden, um das Element temporary zu verbieten, um den Fokus zu erhalten.Etwas wie folgt aus:
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;
}
}
Die CSS funktioniert super. Ich würde auch einen Cursor hinzufügen, der auf dem deaktivierten fieldset nicht erlaubt ist. fieldset [deaktiviert] { Cursor: nicht zulässig; } – duyn9uyen
Vielen Dank! Du hast meinen Tag gerettet. – tarekahf
'z-index: 1' ist zu wenig, wenn es zusammen mit Bootstrap-CSS verwendet wird. z.B. '.input-group.form-control' und viele andere Stile sind auf Z-Index 2, 3 und mehr positioniert. es funktioniert gut mit einem 'Z-Index' von' 10' – girafi