$input.disabled = true;
o
$input.disabled = "disabled";
Welches ist die Standardmethode? Und umgekehrt, wie aktiviert man einen deaktivierten Eingang?
$input.disabled = true;
o
$input.disabled = "disabled";
Welches ist die Standardmethode? Und umgekehrt, wie aktiviert man einen deaktivierten Eingang?
Zum Ändern der disabled
sollten Sie die Eigenschaft .prop()
Funktion.
$("input").prop('disabled', true);
$("input").prop('disabled', false);
El .prop()
Funktion gibt es nicht, aber .attr()
macht es ähnlich:
Setzen Sie das Attribut "deaktiviert".
$("input").attr('disabled','disabled');
Um die Funktion wieder zu aktivieren, ist die richtige Methode die Verwendung von .removeAttr()
$("input").removeAttr('disabled');
Sie können sich immer auf das tatsächliche DOM-Objekt verlassen und ist wahrscheinlich ein wenig schneller als die anderen beiden Optionen, wenn Sie nur mit einem Element arbeiten:
// assuming an event handler thus 'this'
this.disabled = true;
Der Vorteil der Verwendung des .prop()
o .attr()
Methoden ist, dass Sie die Eigenschaft für eine Reihe von ausgewählten Elementen festlegen können.
Nota: In 1.6 gibt es eine .removeProp()
Methode, die sehr ähnlich klingt wie removeAttr()
aber es SOLLTE NICHT VERWENDET WERDEN auf einheimische Eigenschaften wie 'disabled'
Auszug aus der Dokumentation:
Hinweis: Verwenden Sie diese Methode nicht, um native Eigenschaften wie markiert, deaktiviert oder ausgewählt zu entfernen. Dadurch wird die Eigenschaft vollständig entfernt und kann nach dem Entfernen nicht mehr zum Element hinzugefügt werden. Verwenden Sie stattdessen .prop(), um diese Eigenschaften auf false zu setzen.
In der Tat bezweifle ich, dass es viele legitime Verwendungen für diese Methode gibt. Boolesche Requisiten sind so beschaffen, dass man sie auf false setzen sollte, anstatt sie zu "entfernen", wie ihre "Attribut"-Pendants in 1.5
Nebenbei bemerkt, denken Sie daran, dass Sie, wenn Sie ALLE Formular-Eingabeelemente deaktivieren wollen - einschließlich Kontrollkästchen, Radios, Textareas usw. - Sie müssen Folgendes auswählen ':input'
, nicht nur 'input'
. Letztere wählt nur tatsächliche <input>-Elemente aus.
@CornelMasson input,textarea,select,button
ist ein wenig besser zu verwenden als :input
-- :input
als Selektor ist ziemlich ineffizient, weil er die *
dann Schleife über jedes Element und Filter nach tagname - wenn Sie die 4 tagname Selektoren direkt übergeben ist es VIEL schneller. Auch, :input
ist kein Standard-CSS-Selektor, so dass alle Leistungssteigerungen, die durch querySelectorAll
sind verloren
Verhindert dies nur, dass der Benutzer darauf zugreifen kann, oder wird es tatsächlich aus der Webanforderung entfernt?
Nur um der neuen Konventionen willen && damit es in Zukunft anpassbar bleibt (es sei denn, die Dinge ändern sich drastisch mit ECMA6(????):
$(document).on('event_name', '#your_id', function() {
$(this).removeAttr('disabled');
});
y
$(document).off('event_name', '#your_id', function() {
$(this).attr('disabled','disabled');
});
Jikes! Warum $(document).on('event_name', '#your_id', function() {...})
代わりに $('#your_id').on('event_name', function() {...})
. Wie in der jQuery .on() Dokumentation ersteres nutzt die Delegation und hört auf tous event_name
Ereignisse, die sich zu document
und prüft sie auf eine passende #your_id
. Letztere hört speziell auf $('#your_id')
nur Ereignisse und das skaliert besser.
Ersteres funktioniert für Elemente, die zu einem beliebigen Zeitpunkt in das DOM eingefügt werden, letzteres nur für solche, die zu diesem Zeitpunkt vorhanden sind.
// Disable #x
$( "#x" ).prop( "disabled", true );
// Enable #x
$( "#x" ).prop( "disabled", false );
Manchmal müssen Sie ein Formularelement wie input oder textarea deaktivieren/aktivieren. Jquery hilft Ihnen dabei, indem Sie das Attribut disabled auf "disabled" setzen. Für z.B.:
//To disable
$('.someElement').attr('disabled', 'disabled');
Um ein deaktiviertes Element zu aktivieren, müssen Sie das Attribut "disabled" aus diesem Element entfernen oder seine Zeichenfolge leeren. Für z.B:
//To enable
$('.someElement').removeAttr('disabled');
// OR you can set attr to ""
$('.someElement').attr('disabled', '');
beziehen: http://garmoncheg.blogspot.fr/2011/07/how-to-disableenable-element-with.html
Natürlich ist die Frage für jQuery gefragt und dies ist die Änderung der Zustand in einfachen JavaScript, aber es funktioniert.
Dadurch wird der Zustand in JavaScript geändert, aber es wird immer noch ein jQuery-Selektor verwendet, um die erste Eingabe zu erhalten.
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 eine höhere Version verwenden, benutzen 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. Allerdings bietet jQuery eine andere Möglichkeit, jedes Attribut zu entfernen.
Ansatz 1
$("#txtName").attr("disabled", false);
Ansatz 2
$("#txtName").attr("disabled", "");
Ansatz 3
$("#txtName").removeAttr("disabled");
Auch hier gilt: Wenn Sie jQuery 1.7 oder eine höhere Version verwenden, dann benutzen Sie prop() anstelle von attr(). Das ist es. So können Sie jedes Element mit jQuery aktivieren oder deaktivieren.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
8 Stimmen
Mögliche Duplikate von Entfernen deaktiviert Attribut mit JQuery?
3 Stimmen
Ich fand die Abhängig von Plugin, das für Sie nützlich sein könnte