Wie entferne ich das Attribut “deaktiviert” mit jQuery?

Lesezeit: 5 Minuten

Wie entferne ich das Attribut deaktiviert mit jQuery
fatiDev

Ich muss die Eingaben zuerst 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 aber bei den Eingängen ändert sich nichts:

$("#edit").click(function(event){
   alert('');
   event.preventDefault();
   alert($('.inputDisabled').attr('disabled'));
   $('.inputDisabled').removeAttr("disabled");
   alert($('.inputDisabled').attr('disabled'));
});

  • Ich sehe dein Problem nicht. Was fragst du?

    – Nikosantangelo

    29. November 12 um 13:09 Uhr

  • Was ist also die Frage? Ich meine, welches Problem Sie haben

    – Satya Teja

    29. November 12 um 13:09 Uhr

  • Verwenden Sie prop() – .prop(‘deaktiviert’, falsch)

    – Jay Blanchard

    29. November 12 um 13:10 Uhr

  • Wenn Ihr Problem gelöst ist, kreuzen Sie bitte die akzeptierte (echte) Antwort an, damit andere es wissen …

    – Dhamu

    29. November 12 um 13:51 Uhr

  • Das Problem ist, dass es nach dem Klick nicht deaktiviert wird

    – fatiDev

    29. November 12 um 16:18 Uhr


Wie entferne ich das Attribut deaktiviert mit jQuery
Dsgreif

Stets benutze die prop() -Methode zum Aktivieren oder Deaktivieren von Elementen bei der Verwendung von jQuery (siehe unten, warum).

In Ihrem Fall wäre es:

$("#edit").click(function(event){
   event.preventDefault();
   $('.inputDisabled').prop("disabled", false); // Element(s) are now enabled.
});

jsFiddle-Beispiel hier.


Warum verwenden prop() wann du es gebrauchen könntest attr()/removeAttr() um dies zu tun?

Grundsätzlich, prop() sollte beim Holen oder Setzen verwendet werden Eigenschaften (wie zum Beispiel autoplay, checked, disabled und required unter anderem).

Durch die Nutzung removeAttr(), entfernen Sie vollständig die disabled Attribut selbst – während prop() setzt lediglich den zugrunde liegenden booleschen Wert der Eigenschaft auf false.

Während, was Sie tun möchten kann mit gemacht werden attr()/removeAttr(), es bedeutet es nicht sollen getan werden (und kann wie in diesem Fall zu seltsamem/problematischem Verhalten führen).

Die folgenden Auszüge (entnommen aus der jQuery-Dokumentation für prop()) diese Punkte näher erläutern:

“Der Unterschied zwischen Attributen und Eigenschaften kann in bestimmten Situationen wichtig sein. Vor jQuery 1.6 war die .attr() -Methode hat beim Abrufen einiger Attribute manchmal Eigenschaftswerte berücksichtigt, was zu inkonsistentem Verhalten führen konnte. Ab jQuery 1.6 ist die .prop()
-Methode bietet eine Möglichkeit, Eigenschaftswerte explizit abzurufen, während
.attr() ruft Attribute ab.”

“Eigenschaften wirken sich im Allgemeinen auf den dynamischen Zustand eines DOM-Elements aus, ohne das serialisierte HTML-Attribut zu ändern. Beispiele hierfür sind die value
Eigenschaft von Eingabeelementen, die disabled Eigenschaft von Eingängen und Schaltflächen, oder die checked Eigenschaft eines Kontrollkästchens. Der .prop() Methode sollte zum Festlegen verwendet werden disabled und checked anstatt des .attr()
Methode. Der .val() Methode sollte zum Abrufen und Einstellen verwendet werden
value.”

  • Die Leute sollten auch über die schmutzige Checkedness-Flagge Bescheid wissen, die vollständig kaputt geht attr vs prop für Kontrollkästchen: w3.org/TR/html5/forms.html#concept-input-checked-dirty mit Ausnahme der internen jQuery-Workaround-Magie.

    – Ciro Santilli 新疆再教育营六四事件法轮功郝海东

    6. Juli 14 um 11:29 Uhr


  • Hmm, .prop(“disabled”, false) scheint bei mir in einer Schaltfläche nicht zu funktionieren – lässt das ‘disabled’-Attribut im Tag ohne Wert.

    – UpTheCreek

    6. Januar 15 um 10:42 Uhr

  • @UpTheCreek hat bei mir auch nicht funktioniert. Aber ich habe festgestellt, dass es sich (wie üblich) um ein Bereichsproblem mit der ‘this’-Klausel handelt. Im konkreten Fall .prop() wurde auf dem Element ausgeführt, auf das gezeigt wird this (this.prop("disabled", false), aber in einem Rückruf war es an das falsche Element gebunden, also musste ich das Gemeinsame tun var that = this Problemumgehung. Versuchen, mit zu spielen .apply()/.call() funktionierte nicht gut; Ich weiß nicht warum. Überprüfen Sie mit a console.log(this) wenn es auf Ihr gewünschtes Objekt eingestellt ist, kurz vor dem Aufruf this.prop(...)

    – Kamafeder

    22. Januar 15 um 13:35 Uhr


  • Ich nominiere diese Antwort als Kandidat für die Umstellung auf den Dokumententeil. Übersichtlich, vollständig, gut geschrieben.

    – Anne Gunn

    6. September 16 um 17:35 Uhr

  • Durch die Verwendung von removeAttr() entfernen Sie das deaktivierte Attribut selbst vollständig – während prop() lediglich den zugrunde liegenden booleschen Wert der Eigenschaft auf “false” setzt. Ich glaube nicht, dass das stimmt. In HTML ist das bloße Vorhandensein des disabled Die Eigenschaft deaktiviert das Element. Zum Beispiel mit einem <button disabled="false"></button> die Schaltfläche nicht aktivieren, muss die Eigenschaft entfernt werden. Durch Anruf $('button').prop('disabled', false); jQuery entfernt die Eigenschaft für Sie, wie ich in beobachtet habe dieser Codestift (Inspizieren Sie die Entfernung des Eigentums).

    – Naftali

    7. März 19 um 14:25 Uhr

um die Verwendung von deaktivierten Attributen zu entfernen,

 $("#elementID").removeAttr('disabled');

und um die Verwendung von deaktivierten Attributen hinzuzufügen,

$("#elementID").prop("disabled", true);

Genießen 🙂

<input type="text" disabled="disabled" class="inputDisabled" value="">
​<button id="edit">Edit</button>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

$("#edit").click(function(event){
    event.preventDefault();
    $('.inputDisabled').removeAttr("disabled")
});​

http://jsfiddle.net/ZwHfY/

1644274386 225 Wie entferne ich das Attribut deaktiviert mit jQuery
Dhamu

Verwenden Sie so,

HTML:

<input type="text" disabled="disabled" class="inputDisabled" value="">

<div id="edit">edit</div>

JS:

 $('#edit').click(function(){ // click to
            $('.inputDisabled').attr('disabled',false); // removing disabled in this class
 });

1644274386 661 Wie entferne ich das Attribut deaktiviert mit jQuery
Nikosantangelo

Ich denke, Sie versuchen es Umschalten den deaktivierten Zustand, in diesem Fall sollten Sie dies verwenden (aus dieser Frage):

$(".inputDisabled").prop('disabled', function (_, val) { return ! val; });

Hier ist eine funktionierende Geige.

1642012031 135 Laravel 5 Cache fur Ansichten loschen
Mosam Prajapati

zum Entfernen der deaktivierten Eigenschaften

 $('#inputDisabled').removeAttr('Disabled');

zum Hinzufügen der deaktivierten Eigenschaften

 $('#inputDisabled').attr('disabled', 'disabled' );

1644274386 524 Wie entferne ich das Attribut deaktiviert mit jQuery
rap-2-h

2018, ohne JQuery

Ich weiß, dass es bei der Frage um JQuery geht: Diese Antwort ist nur zur Information.

document.getElementById('edit').addEventListener(event => {
    event.preventDefault();
    [...document.querySelectorAll('.inputDisabled')].map(e => e.disabled = false);
}); 

.

815330cookie-checkWie entferne ich das Attribut “deaktiviert” mit jQuery?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy