2532 Stimmen

Deaktivieren/Aktivieren einer Eingabe mit jQuery?

$input.disabled = true;

o

$input.disabled = "disabled";

Welches ist die Standardmethode? Und umgekehrt, wie aktiviert man einen deaktivierten Eingang?

8 Stimmen

3 Stimmen

Ich fand die Abhängig von Plugin, das für Sie nützlich sein könnte

4110voto

gnarf Punkte 103284

JQuery 1.6+

Zum Ändern der disabled sollten Sie die Eigenschaft .prop() Funktion.

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

jQuery 1.5 und niedriger

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');

In jeder Version von jQuery

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

12 Stimmen

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.

39 Stimmen

@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

5 Stimmen

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

67voto

geekbuntu Punkte 841

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');   
});

14 Stimmen

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.

28 Stimmen

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.

2 Stimmen

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

48voto

Harini Sekar Punkte 660
    // 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

18voto

Sajjad Shirazy Punkte 2365
$("input")[0].disabled = true;

oder

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

3 Stimmen

Natürlich ist die Frage für jQuery gefragt und dies ist die Änderung der Zustand in einfachen JavaScript, aber es funktioniert.

2 Stimmen

Dadurch wird der Zustand in JavaScript geändert, aber es wird immer noch ein jQuery-Selektor verwendet, um die erste Eingabe zu erhalten.

8 Stimmen

Aber ich glaube nicht, dass wir hier Enzyklopädie von Jquery machen, wenn eine Antwort funktioniert, ist es gut

16voto

wild coder Punkte 810

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.com

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.

Powered by:

X