it-swarm.com.de

Eine Eingabe mit jQuery deaktivieren / aktivieren?

$input.disabled = true;

oder

$input.disabled = "disabled";

Welches ist der Standardweg? Und umgekehrt, wie können Sie einen deaktivierten Eingang aktivieren?

2165
omg

jQuery 1.6+

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

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

jQuery 1.5 und niedriger

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

Setzen Sie das deaktivierte Attribut.

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

Zum erneuten Aktivieren ist die richtige Methode die Verwendung von .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 sich nur mit einem Element befassen:

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

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 stark nach removeAttr() anhört, aber NICHT VERWENDET WERDEN SOLLTE auf native Eigenschaften wie 'disabled' Auszug aus der Dokumentation:

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

Ich bezweifle, dass es viele legitime Verwendungszwecke für diese Methode gibt. Boolesche Requisiten werden so erstellt, dass Sie sie auf false setzen sollten, anstatt sie wie ihre "Attribut" -Kollegen in 1.5 zu "entfernen"

3654
gnarf

Nur um neue Konventionen und Anpassungen zu ermöglichen (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');   
});
55
geekbuntu
    // Disable #x
    $( "#x" ).prop( "disabled", true );
    // Enable #x
    $( "#x" ).prop( "disabled", false );

Manchmal müssen Sie das Formularelement wie Eingabe oder Textbereich deaktivieren/aktivieren. Mit Jquery können Sie dies auf einfache Weise durchführen, 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 "disabled" von diesem Element entfernen oder die Zeichenfolge leeren. Zum Beispiel:

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

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

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

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

oder

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

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();
8
Nicu Surdu

Wenn Sie nur den aktuellen Status umkehren möchten (wie bei einem Umschaltknopf):

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

Es gibt viele Möglichkeiten, mit denen Sie jedes Element aktivieren/deaktivieren können :

Ansatz 1

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

Ansatz 2

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

Wenn Sie jQuery 1.7 oder höher 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 zum Entfernen von Attributen.

Ansatz 1

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

Ansatz 2

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

Ansatz

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

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

4
wild coder

Mit der Methode jQuery prop () können Sie Formularelemente oder Steuerelemente mithilfe von jQuery dynamisch deaktivieren oder aktivieren. Die prop () -Methode erfordert jQuery 1.6 und höher.

Beispiel:

<script type="text/javascript">
        $(document).ready(function(){
            $('form input[type="submit"]').prop("disabled", true);
            $(".agree").click(function(){
                if($(this).prop("checked") == true){
                    $('form input[type="submit"]').prop("disabled", false);
                }
                else if($(this).prop("checked") == false){
                    $('form input[type="submit"]').prop("disabled", true);
                }
            });
        });
    </script>
2
SPARTAN

Update für 2018:

Jetzt ist jQuery nicht mehr erforderlich und es ist schon eine Weile her, dass document.querySelector oder document.querySelectorAll (für mehrere Elemente) fast genau die gleiche Aufgabe wie $ ausführen, plus explizitere getElementById, getElementsByClassName, getElementsByTagName

Deaktivieren eines Feldes der Klasse "Eingabe-Kontrollkästchen"

document.querySelector('.input-checkbox').disabled = true;

oder mehrere Elemente

document.querySelectorAll('.input-checkbox').forEach(el => el.disabled = true);
2
Pawel

das funktioniert bei mir

$("#values:input").attr("disabled",true);
$("#values:input").attr("disabled",false);
1
learnkevin

Deaktivieren:

$('input').attr('readonly', true); // Disable it.
$('input').addClass('text-muted'); // Gray it out with bootstrap.

Aktivieren:

$('input').attr('readonly', false); // Enable it.
$('input').removeClass('text-muted'); // Back to normal color with bootstrap.
1
Tomer Ben David

Verwenden Sie wie folgt,

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

    $( "#id" ).prop( "disabled", false );
0

Deaktiviere true für den Eingabetyp:

Bei einem bestimmten Eingabetyp ( Bsp. Eingabetyp )

$("input[type=text]").attr('disabled', true);

Für alle Arten von Eingaben

$("input").attr('disabled', true);
0
Hasib Kamal

Ich habe @gnarf answer verwendet und als Funktion hinzugefügt

   $.fn.disabled = function (isDisabled) {
     if (isDisabled) {
       this.attr('disabled', 'disabled');
     } else {
       this.removeAttr('disabled');
     }
   };

Dann benutze es so

$('#myElement').disable(true);
0
Imants Volkovs

2018, ohne JQuery (ES6)

Alle deaktivieren input:

[...document.querySelectorAll('input')].map(e => e.disabled = true);

Deaktiviere input mit id="my-input"

document.getElementById('my-input').disabled = true;

Die Frage ist mit JQuery, es ist nur zu Ihrer Information.

0
rap-2-h