Ich muss zuerst die Eingaben deaktivieren und dann auf einen Link klicken, um sie zu aktivieren.
Das habe ich bisher versucht, aber es funktioniert nicht.
HTML:
<input type="text" disabled="disabled" class="inputDisabled" value="">
jQuery:
$("#edit").click(function(event){
event.preventDefault();
$('.inputDisabled').removeAttr("disabled")
});
Das zeigt mir true
und dann false
ändert sich aber nichts an den Eingaben:
$("#edit").click(function(event){
alert('');
event.preventDefault();
alert($('.inputDisabled').attr('disabled'));
$('.inputDisabled').removeAttr("disabled");
alert($('.inputDisabled').attr('disabled'));
});
javascript
jquery
disabled-input
fatiDev
quelle
quelle
Antworten:
Verwenden Sie immer die
prop()
Methode, um Elemente zu aktivieren oder zu deaktivieren, wenn Sie jQuery verwenden (siehe unten, warum).In Ihrem Fall wäre es:
jsFiddle Beispiel hier.
Grundsätzlich
prop()
soll verwendet werden , wenn Abrufen oder Festlegen Eigenschaften (wieautoplay
,checked
,disabled
undrequired
unter anderem).Durch die Verwendung von
removeAttr()
entfernen Sie dasdisabled
Attribut selbst vollständig, während Sieprop()
lediglich den zugrunde liegenden booleschen Wert der Eigenschaft auf false setzen.Während das, was Sie tun mögen , kann getan werden , mit
attr()
/removeAttr()
, bedeutet es nicht , es sollte (und kann seltsames / problematisches Verhalten führen, wie in diesem Fall) erfolgen.Die folgenden Auszüge (aus der jQuery-Dokumentation für prop () ) erläutern diese Punkte ausführlicher:
quelle
attr
vsprop
für Kontrollkästchen: w3.org/TR/html5/forms.html#concept-input-checked-dirty außer für interne jQuery Magie umgehen..prop()
wurde das Element ausgeführt, auf das verwiesen wirdthis
(this.prop("disabled", false)
aber da es sich um einen Rückruf handelt, war es an das falsche Element gebunden, sodass ich die allgemeinevar that = this
Problemumgehung durchführen musste. Der Versuch, mit.apply()
/ zu spielen,.call()
funktionierte nicht gut, ich weiß es nicht Warum. Überprüfen Sie noch einmal,console.log(this)
ob es auf Ihr gewünschtes Objekt eingestellt ist, bevor Sie anrufenthis.prop(...)
disabled
wird das Element durch das bloße Vorhandensein der Eigenschaft deaktiviert. Wenn beispielsweise a<button disabled="false"></button>
die Schaltfläche nicht aktiviert, muss die Eigenschaft entfernt werden. Wenn Sie$('button').prop('disabled', false);
jQuery aufrufen, wird die Eigenschaft für Sie entfernt, wie ich in diesem Codepen festgestellt habe (überprüfen Sie, ob die Eigenschaft entfernt wurde).http://jsfiddle.net/ZwHfY/
quelle
um die Verwendung deaktivierter Attribute zu entfernen,
und um die Verwendung deaktivierter Attribute hinzuzufügen,
Genießen :)
quelle
Verwenden Sie so,
HTML:
JS:
quelle
<a>
, bei dem.prop('disabled', false)
es nicht funktioniert. Ich habe es in a geändert<button>
und es funktioniert jetztIch denke , dass Sie versuchen , wechseln um den deaktivierten Zustand, in Hexe Fall sollten Sie diese verwenden (aus dieser Frage ):
Hier ist eine funktionierende Geige.
quelle
Dachte das kannst du einfach einrichten
quelle
Dies war der einzige Code, der für mich funktioniert hat:
Beachten Sie, dass es ist
removeProp
und nichtremoveAttr
.Ich benutze
jQuery 2.1.3
hier.quelle
2018 ohne JQuery
Ich weiß, dass es sich bei der Frage um JQuery handelt: Diese Antwort ist nur zu Ihrer Information.
quelle
In dieser Frage wird speziell jQuery erwähnt. Wenn Sie dies jedoch ohne jQuery erreichen möchten, lautet das Äquivalent in Vanille-JavaScript:
quelle
elem.removeAttr('disabled');
arbeitet für mich