$input.disabled = true;
oder
$input.disabled = "disabled";
Welches ist der Standardweg? Und umgekehrt, wie aktivieren Sie eine deaktivierte Eingabe?
javascript
jquery
html-input
disabled-input
Oh mein Gott
quelle
quelle
Antworten:
jQuery 1.6+
Um die
disabled
Eigenschaft zu ändern , sollten Sie die.prop()
Funktion verwenden.jQuery 1.5 und niedriger
Die
.prop()
Funktion existiert nicht, funktioniert aber.attr()
ähnlich:Legen Sie das deaktivierte Attribut fest.
Zum erneuten Aktivieren ist die richtige Methode zu verwenden
.removeAttr()
In jeder Version von jQuery
Sie können sich immer auf das eigentliche DOM-Objekt verlassen und sind wahrscheinlich etwas schneller als die beiden anderen Optionen, wenn Sie nur mit einem Element arbeiten:
Der Vorteil der Verwendung der Methoden
.prop()
oder.attr()
besteht darin, dass Sie die Eigenschaft für eine Reihe ausgewählter Elemente festlegen können.Hinweis: In 1.6 gibt es eine
.removeProp()
Methode, die sich sehr ähnlich anhörtremoveAttr()
, die jedoch NICHT für native Eigenschaften wie'disabled'
Auszug aus der Dokumentation verwendet werden sollte:Tatsächlich bezweifle ich, dass es viele legitime Verwendungszwecke für diese Methode gibt. Boolesche Requisiten werden so ausgeführt, dass Sie sie auf false setzen sollten, anstatt sie wie ihre "Attribut" -Partner in 1.5 zu "entfernen"
quelle
':input'
nicht nur auswählen'input'
. Letzteres wählt nur tatsächliche <input> -Elemente aus.input,textarea,select,button
ist etwas besser zu verwenden als:input
-:input
da ein Selektor ziemlich ineffizient ist, weil er*
jedes Element auswählen und dann durchlaufen und nach Tagname filtern muss - wenn Sie die 4 Tagname-Selektoren direkt übergeben, ist es VIEL schneller. Auch:input
ist kein Standard-CSS-Selektor, so dass alle möglichen LeistungssteigerungenquerySelectorAll
verloren gehen.removeProp("disabled")
von verursachte bei einigen Browsern wie Chrome das Problem, dass "Eigenschaften vollständig entfernt und nicht erneut hinzugefügt werden", wie von @ThomasDavidBaker hervorgehoben, während es bei einigen wie Firefox einwandfrei funktionierte. Wir sollten hier wirklich vorsichtig sein. Verwenden Sie.prop("disabled",false)
stattdessen immerNur um neue Konventionen zu erreichen und es in Zukunft anpassungsfähig zu machen (es sei denn, die Dinge ändern sich mit ECMA6 drastisch (????):
und
quelle
$(document).on('event_name', '#your_id', function() {...})
statt$('#your_id').on('event_name', function() {...})
. Wie in der Dokumentation zu jQuery .on () beschrieben, verwendet die erstere die Delegierung und lauscht allenevent_name
Ereignissen, die aufblasen ,document
und überprüft sie auf Übereinstimmung#your_id
. Letzterer hört$('#your_id')
nur auf Ereignisse und das skaliert besser.Manchmal müssen Sie das Formularelement wie Eingabe oder Textbereich deaktivieren / aktivieren. Jquery hilft Ihnen dabei, dies einfach zu erreichen, indem Sie das Attribut disabled auf "disabled" setzen. Zum Beispiel:
Um ein deaktiviertes Element zu aktivieren, müssen Sie das Attribut "disabled" aus diesem Element entfernen oder die Zeichenfolge leeren. Zum Beispiel:
Siehe: http://garmoncheg.blogspot.fr/2011/07/how-to-disableenable-element-with.html
quelle
oder
quelle
Sie können dies irgendwo global in Ihren Code einfügen:
Und dann können Sie Dinge schreiben wie:
quelle
prop
und nichtattr
mitdisabled
ihr, damit sie ordnungsgemäß funktioniert (vorausgesetzt, jQuery 1.6 oder höher).attr
? Ich benutze den obigen Code in einigen Projekten und soweit ich mich erinnere, funktioniert er in Ordnungchecked
Eigentum von Kontrollkästchen. Die Verwendungattr
führt nicht zum gleichen Ergebnis.Wenn Sie nur den aktuellen Status invertieren möchten (wie bei einem Umschalttastenverhalten):
quelle
Es gibt viele Möglichkeiten, mit denen Sie jedes Element aktivieren / deaktivieren können :
Ansatz 1
Ansatz 2
Wenn Sie jQuery 1.7 oder eine höhere Version verwenden, verwenden Sie prop () anstelle von attr ().
Wenn Sie ein Element aktivieren möchten, müssen Sie nur das Gegenteil von dem tun, was Sie getan haben, um es zu deaktivieren. JQuery bietet jedoch eine andere Möglichkeit, Attribute zu entfernen.
Ansatz 1
Ansatz 2
Ansatz 3
Wenn Sie jQuery 1.7 oder eine höhere Version verwenden, verwenden Sie prop () anstelle von attr (). Das ist. Auf diese Weise aktivieren oder deaktivieren Sie jedes Element mit jQuery.
quelle
Update für 2018:
Jetzt gibt es keine Notwendigkeit für jQuery und es ist eine Weile her , seit gewesen
document.querySelector
oderdocument.querySelectorAll
(für mehrere Elemente) tut fast genau gleiche Arbeit wie $, plus mehr explizit diejenigengetElementById
,getElementsByClassName
,getElementsByTagName
Deaktivieren eines Felds der Klasse "Eingabe-Kontrollkästchen"
oder mehrere Elemente
quelle
Mit der Methode jQuery prop () können Sie Formularelemente deaktivieren oder aktivieren oder mithilfe von jQuery dynamisch steuern. Die prop () -Methode erfordert jQuery 1.6 und höher.
Beispiel:
quelle
Deaktivieren:
Aktivieren:
quelle
Deaktivieren Sie true für den Eingabetyp:
quelle
$("input[name=method]").prop('disabled', true);
das funktioniert bei mir
quelle
Ich habe @gnarf answer verwendet und als Funktion hinzugefügt
Dann verwenden Sie so
quelle
2018 ohne JQuery (ES6)
Alle deaktivieren
input
:Deaktivieren
input
mitid="my-input"
Die Frage ist bei JQuery, es ist nur zu Ihrer Information.
quelle
Ansatz 4 (dies ist eine Erweiterung der Wildcodierer-Antwort )
quelle
Verwenden Sie so,
quelle
quelle
In jQuery Mobile:
Zum Deaktivieren
Zum Aktivieren
quelle