Eingabe mit jQuery deaktivieren/aktivieren?

Lesezeit: 5 Minuten

Eingabe mit jQuery deaktivierenaktivieren
OMG

$input.disabled = true;

oder

$input.disabled = "disabled";

Was ist der Standardweg? Und umgekehrt, wie aktiviert man einen deaktivierten Eingang?

  • mögliches Duplikat von Deaktiviertes Attribut mit JQuery entfernen?

    – Benutzer2381114

    29. April 2014 um 12:58 Uhr

  • ich fand die Kommt drauf an Plugin, das Sie vielleicht nützlich finden

    – Onshop

    4. Juli 2014 um 9:52 Uhr

Eingabe mit jQuery deaktivierenaktivieren
gnarf

jQuery 1.6+

Um es zu ändern disabled Eigenschaft, die Sie verwenden sollten .prop() Funktion.

$("input").prop('disabled', true);
$("input").prop('disabled', false);

jQuery 1.5 und niedriger

Die .prop() Funktion existiert nicht, aber .attr() geht ähnlich:

Legen Sie das deaktivierte Attribut fest.

$("input").attr('disabled','disabled');

Um es wieder zu aktivieren, ist die richtige Methode zu verwenden .removeAttr()

$("input").removeAttr('disabled');

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 es nur mit einem Element zu tun haben:

// assuming an event handler thus 'this'
this.disabled = true;

Der Vorteil bei der Verwendung von .prop() oder .attr() Methoden besteht darin, dass Sie die Eigenschaft für eine Reihe ausgewählter Elemente festlegen können.


Notiz: In 1.6 gibt es eine .removeProp() Methode, die sehr nach klingt removeAttr()aber es SOLLTE NICHT BENUTZT WERDEN auf native Eigenschaften wie 'disabled' Auszug aus der Dokumentation:

Hinweis: Verwenden Sie diese Methode nicht, um systemeigene Eigenschaften wie aktiviert, deaktiviert oder ausgewählt zu entfernen. Dadurch wird die Eigenschaft vollständig entfernt und kann nach dem Entfernen nicht erneut zum Element hinzugefügt werden. Verwenden Sie stattdessen .prop(), um diese Eigenschaften auf „false“ zu setzen.

Tatsächlich bezweifle ich, dass es viele legitime Verwendungen für diese Methode gibt, boolesche Requisiten werden so erstellt, dass Sie sie auf false setzen sollten, anstatt sie wie ihre „Attribute“-Pendants in 1.5 zu „entfernen“.

  • Denken Sie nebenbei daran, dass, wenn Sie ALLE Formulareingabesteuerelemente deaktivieren möchten – inkl. Checkboxen, Radios, Textareas, etc. – Sie müssen auswählen ':input'nicht nur 'input'. Letzteres wählt nur tatsächliche -Elemente aus.

    – Cornel Masson

    16. August 2012 um 8:10 Uhr

  • @CornelMasson input,textarea,select,button ist ein wenig besser zu bedienen als :input:input als Selektor ist ziemlich ineffizient, weil er selektieren muss * Schleifen Sie dann über jedes Element und filtern Sie nach Tagname – wenn Sie die 4 Tagnamen-Selektoren direkt übergeben, ist es VIEL schneller. Ebenfalls, :input ist kein Standard-CSS-Selektor, daher sind keine Leistungsgewinne möglich querySelectorAll sind verloren

    – gnarf

    16. September 2012 um 7:01 Uhr

  • Verhindert dies nur, dass der Benutzer darauf zugreift, oder wird es tatsächlich aus der Webanforderung entfernt?

    – OneChillDude

    2. Mai 2013 um 15:45 Uhr

  • Verwendung der .removeProp("disabled") verursachte das Problem, dass „Eigenschaften vollständig entfernt und nicht wieder hinzugefügt werden“, wie von @ThomasDavidBaker hervorgehoben, bei einigen Browsern wie Chrome, während es bei einigen wie Firefox gut funktionierte. Hier sollten wir wirklich aufpassen. Verwenden Sie immer .prop("disabled",false) stattdessen

    – Sandeepan Nath

    25. Juni 2014 um 8:08 Uhr

  • Weder .prop noch .attr reichen aus, um Ankerelemente zu deaktivieren; .prop wird nicht einmal das ‘Steuerelement’ ausgrauen (.attr tut es, aber das Href ist immer noch aktiv). Sie müssen auch einen Click-Event-Handler hinzufügen, der preventDefault() aufruft.

    – Jeff Lowery

    25. September 2014 um 18:50 Uhr

1646083873 259 Eingabe mit jQuery deaktivierenaktivieren
geekbuntu

Nur wegen neuer Konventionen && um es für die Zukunft anpassungsfähig zu machen (es sei denn, die Dinge ändern sich drastisch mit ECMA6 (????):

$(document).on('event_name', '#your_id', function() {
    $(this).removeAttr('disabled');
});

und

$(document).off('event_name', '#your_id', function() {
    $(this).attr('disabled','disabled');   
});

  • Jikes! Warum $(document).on('event_name', '#your_id', function() {...}) anstatt $('#your_id').on('event_name', function() {...}). Wie im beschrieben jQuery .on()-Dokumentation Ersteres verwendet Delegation und hört zu alle event_name Ereignisse, die bis zu sprudeln document und prüft sie auf Übereinstimmung #your_id. Letzteres hört speziell auf $('#your_id') nur Ereignisse und das skaliert besser.

    – Peter V. Mørch

    31. Juli 2013 um 20:09 Uhr


  • Ersteres funktioniert für Elemente, die zu irgendeinem Zeitpunkt in das DOM eingefügt wurden, letzteres nur für diejenigen, die zu diesem Zeitpunkt vorhanden sind.

    – verrücktmykl

    10. Oktober 2013 um 16:56 Uhr

  • @crazymykl Richtig, aber Sie sollten keine Elemente mit einer ID hinzufügen, die bereits auf Ihrer Seite vorhanden ist.

    – SepehrM

    7. April 2016 um 13:46 Uhr

    // Disable #x
    $( "#x" ).prop( "disabled", true );
    // Enable #x
    $( "#x" ).prop( "disabled", false );

Manchmal müssen Sie das Formularelement wie Input oder Textarea deaktivieren/aktivieren. Jquery hilft Ihnen dabei, dies einfach zu tun, indem Sie das Attribut “disabled” auf “disabled” setzen. Zum Beispiel:

  //To disable 
  $('.someElement').attr('disabled', 'disabled');

Um das deaktivierte Element zu aktivieren, müssen Sie das Attribut “deaktiviert” von diesem Element entfernen oder seine Zeichenfolge leeren. Zum Beispiel:

//To enable 
$('.someElement').removeAttr('disabled');

// OR you can set attr to "" 
$('.someElement').attr('disabled', '');

verweisen :http://garmoncheg.blogspot.fr/2011/07/how-to-disableenable-element-with.html

Eingabe mit jQuery deaktivierenaktivieren
Sajjad Shirazy

$("input")[0].disabled = true;

oder

$("input")[0].disabled = false;

1646083875 629 Eingabe mit jQuery deaktivierenaktivieren
wilder Coder

Es gibt viele Möglichkeiten, sie zu verwenden, um jedes Element zu aktivieren/deaktivieren :

Ansatz 1

$("#txtName").attr("disabled", true);

Ansatz 2

$("#txtName").attr("disabled", "disabled");

Wenn Sie jQuery 1.7 oder eine höhere Version verwenden, verwenden Sie prop() anstelle von attr().

$("#txtName").prop("disabled", "disabled");

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, ein Attribut zu entfernen.

Ansatz 1

$("#txtName").attr("disabled", false);

Ansatz 2

$("#txtName").attr("disabled", "");

Ansatz 3

$("#txtName").removeAttr("disabled");

Wenn Sie jQuery 1.7 oder eine höhere Version verwenden, verwenden Sie erneut prop() anstelle von attr(). Das ist. So aktivieren oder deaktivieren Sie jedes Element mit jQuery.

Sie können dies irgendwo global in Ihren Code einfügen:

$.prototype.enable = function () {
    $.each(this, function (index, el) {
        $(el).removeAttr('disabled');
    });
}

$.prototype.disable = function () {
    $.each(this, function (index, el) {
        $(el).attr('disabled', 'disabled');
    });
}

Und dann kannst du Sachen schreiben wie:

$(".myInputs").enable();
$("#otherInput").disable();

1646083876 793 Eingabe mit jQuery deaktivierenaktivieren
daVe

Wenn Sie nur den aktuellen Zustand umkehren möchten (wie das Verhalten einer Umschalttaste):

$("input").prop('disabled', ! $("input").prop('disabled') );

  • Danke, ich habe dasselbe für den Schalter, den es ist; $(“input”).prop(‘disabled’, function(i, v) { return !v; });

    – Durchflussw

    30. April 2020 um 9:31 Uhr

892870cookie-checkEingabe mit jQuery deaktivieren/aktivieren?

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

Privacy policy