$input.disabled = true;
oder
$input.disabled = "disabled";
Welches ist der Standardweg? Und umgekehrt, wie können Sie einen deaktivierten Eingang aktivieren?
Um die Eigenschaft disabled
zu ändern, sollten Sie die Funktion .prop()
verwenden.
$("input").prop('disabled', true);
$("input").prop('disabled', false);
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');
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"
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');
});
// 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
$("input")[0].disabled = true;
oder
$("input")[0].disabled = false;
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();
Wenn Sie nur den aktuellen Status umkehren möchten (wie bei einem Umschaltknopf):
$("input").prop('disabled', ! $("input").prop('disabled') );
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.
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>
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);
das funktioniert bei mir
$("#values:input").attr("disabled",true);
$("#values:input").attr("disabled",false);
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.
Verwenden Sie wie folgt,
$( "#id" ).prop( "disabled", true );
$( "#id" ).prop( "disabled", false );
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);
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);
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.