Wie deaktiviere ich alle <Eingaben> in einem Formular mit jQuery?


Antworten:


283

In älteren Versionen könnten Sie verwenden attr. Ab jQuery 1.6 sollten Sie propstattdessen Folgendes verwenden :

$("#target :input").prop("disabled", true);

So deaktivieren Sie alle Formularelemente in 'Ziel'. Siehe :input:

Entspricht allen Eingabe-, Textbereichs-, Auswahl- und Schaltflächenelementen.

Wenn Sie nur die <input>Elemente wollen :

$("#target input").prop("disabled", true);

21
Ab jQuery 1.6 sollten Sie verwenden$("#target :input").prop("disabled", true);
danijel

4
Jemand sollte die Antwort mit der aktualisierten Methode bearbeiten - dies sind an dieser Stelle nur schlechte Informationen.
Ben Claar

und wie geht das in einem submit () - Rückruf mit $ (this)?
Olivier Pons

2
@OlivierPons $(this).closest('form').find('input').prop('disabled', true);. Ich bin mir nicht sicher, ob Sie das besser konsolidieren können, aber ich bin bei jQuery immer noch ziemlich noobisch.
wjervis

39

Das obige Beispiel ist technisch falsch. Gemäß der neuesten jQuery sollte die prop()Methode für Dinge wie deaktiviert verwendet werden. Siehe ihre API-Seite.

Um alle Formularelemente innerhalb von 'target' zu deaktivieren, verwenden Sie die Eingabeauswahl:, die allen Eingabe-, Textbereichs-, Auswahl- und Schaltflächenelementen entspricht.

$("#target :input").prop("disabled", true);

Wenn Sie nur die Elemente möchten, verwenden Sie diese.

$("#target input").prop("disabled", true);

15

Der prägnantere Weg ist auch die Verwendung der Selektor-Engine. So deaktivieren Sie alle Formularelemente in einem div oder übergeordneten Formular.

$myForm.find(':input:not(:disabled)').prop('disabled',true)

13

Du kannst hinzufügen

 <fieldset class="fieldset">

und dann können Sie anrufen

 $('.fieldset').prop('disabled', true);

8

So deaktivieren Sie alle Formulare, so einfach wie das Schreiben:

jQuery 1.6+

$("#form :input").prop("disabled", true);

jQuery 1.5 und niedriger

$("#form :input").attr('disabled','disabled');

8

Mit dieser einen Zeile können Sie jedes Eingabefeld in einem Formular deaktivieren

$('form *').prop('disabled', true);

Dadurch wird jedem Element im Formular unnötigerweise eine deaktivierte Eigenschaft hinzugefügt.
Osvaldo Maria

@OsvaldoMaria Ja, das liegt am Stern-Selektor (all). Sie können allen Eingabeelementen, die Sie deaktivieren möchten, eine .custom-Klasse hinzufügen und dann den Selektor in $ ('form .custom-class') ändern. Prop ( 'deaktiviert', wahr ').
Samir Rahimy

-1

Die endgültige Antwort (Änderungen an der jQuery-API in Version 1.6) wurde von Gnarf gegeben


Er bat darum, "alle Eingaben innerhalb eines Formulars zu deaktivieren" und nicht nur "alle Eingaben zu deaktivieren".
Bengala

@Bengala sicher, aber Sie markieren mich hart dafür, dass ich als erster darauf hingewiesen habe, dass sich die API geändert hat. Zu der Zeit, als ich dies gepostet habe, erwähnte keine der anderen Antworten diesen Punkt.
ErichBSchulz

Ich verstehe, aber ich denke, Sie sollten den jeweiligen Credits eine korrekte Antwort beifügen. Der Link zeigt nur, wie alle Eingaben deaktiviert werden. Ich bestehe darauf, dass er die Frage überhaupt nicht beantwortet.
Bengala
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.