Formularfelder löschen und zurücksetzen

9

Ich habe ein Formular mit verschiedenen Eingabefeldern und zwei Schaltflächen; eine für das Einreichen und eine für das Abbrechen.

%Vor%

Ich möchte alle Eingaben löschen, wenn auf die Abbrechen-Schaltfläche geklickt wird. Bisher habe ich es geschafft, indem ich die ref Props jeder Eingabe verwendete.

%Vor%

Ich möchte jedoch die Eingabefelder leeren, ohne sie einzeln zu leeren. Ich möchte etwas ähnliches (jQuery): $('#create-course-form input[type=text]').val('');

    
ChemseddineZ 11.05.2017, 17:54
quelle

3 Antworten

15

Die Antwort hängt davon ab, ob Ihre Eingaben kontrolliert oder unkontrolliert sind oder nicht. Wenn Sie sich nicht sicher sind oder weitere Informationen dazu benötigen, sehen Sie sich die offiziellen Dokumente zu an kontrollierte Komponenten und unkontrollierte Komponenten . Danke @ Dan-Esparza für die Bereitstellung der Links.

Beachten Sie auch, dass Zeichenfolgenliterale in% co_de verwendet % ist veraltet . Verwenden Sie stattdessen die Standard-Callback-Methode.

Löschen eines Formulars mit unkontrollierten Feldern

Sie können das gesamte Formular und nicht jedes Formularfeld einzeln löschen.

%Vor%

Wenn Ihr Formular kein ref -Attribut hatte, könnten Sie auch id verwenden:

%Vor%

Löschen eines Formulars mit kontrollierten Feldern

Wenn Sie kontrollierte Formularfelder verwenden, müssen Sie möglicherweise jede Komponente in Ihrem Formular explizit zurücksetzen, je nachdem, wie Ihre Werte im Status gespeichert sind.

Wenn sie einzeln deklariert sind, müssen Sie jedes explizit zurücksetzen:

%Vor%

Demo unten:

%Vor% %Vor%

Es gibt jedoch einen saubereren Weg, dies zu tun. Anstatt prozentual ref state Eigenschaften und n Event Handler zu haben, können wir den Code mit etwas cleverem Code drastisch reduzieren.

Im Konstruktor deklarieren wir einfach ein leeres Objekt, das zum Speichern von Eingabewerten verwendet wird. Wir verwenden nur einen Eingabehandler und übergeben ihm den Index des Eingabeelements, dessen Wert geändert werden soll. Dies bedeutet, dass der Wert einer einzelnen Eingabe in dem Moment erzeugt wird, in dem wir anfangen, in sie einzugeben.

Um das Formular zurückzusetzen, müssen wir unser Eingabeobjekt wieder auf leer setzen.

Der Eingabewert ist n . Wenn this.state.inputVal[i] nicht existiert (wir haben noch nichts in diese Eingabe eingegeben), möchten wir, dass der Wert eine leere Zeichenfolge (anstelle von null) ist.

%Vor%

Demo unten:

%Vor% %Vor%
    
Chris 11.05.2017, 17:55
quelle
6

Sehr einfach:

%Vor% %Vor%

Viel Glück:)

    
Trần Bảo Huy 03.11.2017 02:42
quelle
2

Der folgende Code sollte das Formular mit einem Klick zurücksetzen.

%Vor%
    
Sharad Pawar 04.10.2017 13:13
quelle

Tags und Links