$ ("...") [0] .reset ist keine Funktion ... das Zurücksetzen von Formularen in jQuery

7

Ich versuche, einige Formulare mit jQuery zurückzusetzen, aber ich habe einige Probleme. Abgesehen von Lösungen, die das Schreiben von Funktionen oder benutzerdefinierten Plugins beinhalten, finde ich immer wieder, dass die Reset-Methode kein Standard-Teil von jQuery ist, aber Teil von Standard-Javascript ist.

Wie auch immer, mein erster Ansatz war, mit

zu gehen

$("#theForm").reset();

wo die ID des Formulars="theForm".

Das hat offensichtlich nicht funktioniert, weil es angenommen hat, dass reset () ein Teil von jQuery war.

Das nächste, was ich ausprobiert habe, war

document.getElementById(theForm).reset();

Was auch nicht funktioniert hat. Ich bin neu bei jQuery, also bin ich mir nicht sicher, ob ich normales Javascript mit jQuery mischen kann. Ich muss wie ein Trottel klingen, um das zu sagen.

Wie auch immer, nach einigen Recherchen fand ich immer wieder, dass ich reset () in jQuery verwenden könnte, indem ich diese ...

mache

$("#theForm")[0].reset();

oder

$("#theForm").get(0).reset();

In jedem Artikel, der diese zwei Schnipsel enthält, hat jeder in den Kommentaren funktioniert.

Außer mir.

Die Fehlerkonsole sagt mir immer wieder, dass das, was ich geschrieben habe, nicht existiert. Ich habe meinen ganzen Code geprüft und es gibt keine andere Instanz des Wortes "reset", also kann es auch nicht sein.

Jedenfalls bin ich ratlos.

    
user2426162 27.05.2013, 20:16
quelle

7 Antworten

20

Lösung des ursprünglichen Problems in diesem Thread

Für ein HTML-Formular wie dieses:

%Vor%

Bei Verwendung von document.getElementById("theForm").reset() , wenn Sie einen js-Fehler erhalten, der

lautet
  

reset () ist keine Funktion

Der Grund könnte ein Element sein, das reset als name oder id hat. Ich habe dasselbe Problem gesehen Die Benennung eines Elements als reset überschreibt die Funktion reset ().

    
Sanjeev 26.03.2014 04:40
quelle
6

Dies:

%Vor%

funktioniert gut. Schau es dir hier an: Ссылка

Es muss also entweder mit dem Formular oder mit der Art und Weise, wie Sie das Skript an den Button anhängen, etwas nicht stimmen.

    
Diego Mijelshon 27.05.2013 20:59
quelle
3

Der Fehler wird dadurch verursacht, dass der Reset-Button (oder ein anderes Formularelement) den Namen reset - name="reset" hat. Daher wird form.reset in das DOM-Element mit name="reset" aufgelöst und nicht durch die Methode reset.

DEMO MIT name="reset" - Prüfe Konsole

%Vor% %Vor%

GLEICHE DEMO ABER MIT name!="reset" - kein Fehler; Code funktioniert

%Vor% %Vor%

GLEICHE DEMO, ABER MIT id="reset" - Konsole überprüfen

%Vor% %Vor%
    
PeterKA 17.06.2015 01:13
quelle
1

Wenn "theForm" eine ID ist, müssen wir $('#theForm')[0] verwenden? Ich denke, es ist eine falsche Angewohnheit. Wenn auf einer HTML-Seite mehr Formulare vorhanden sind, verwenden Sie Namen. Und wenn Sie ID verwenden, sollte es eindeutig sein.

Es wäre großartig, wenn Sie Ihren HTML-Code hier angeben könnten:)

    
smilyface 08.10.2013 19:04
quelle
0

Bitte überprüfen Sie, dass Sie kein Formularelement namens 'reset' haben. Wenn ja, benennen Sie es um, und die Methode .reset () funktioniert. Andernfalls document.getElementById ("formId") .reset wird das Formularelement mit dem Namen 'reset' auswählen, deshalb kann die reset () -Methode nicht funktionieren. Sie erhalten eine Fehlermeldung wie "Objekt ist keine Funktion".

    
v.babak 28.09.2014 10:55
quelle
0

Das Problem ist höchstwahrscheinlich, dass die Reset-Button-ID des Formulars auf "Reset" gesetzt ist, also die Fehlermeldung.

Ich hatte das gleiche Problem und habe dann endlich herausgefunden und mein Formular geändert zu:

%Vor%

Das Ändern der Reset-Tasten-ID hat mich überzeugt.

    
user4426017 21.01.2015 23:50
quelle
0

Also ... ich denke, hier gehen ein paar Dinge vor sich.

  1. Wie Diego in seiner Antwort darauf hingewiesen hat, funktioniert $('#theForm')[0].reset(); sehr gut.
  2. Das zweite Beispiel, das Sie ausprobiert haben: document.getElementById(theForm).reset(); funktioniert nicht, weil Javascript denkt, dass Sie eine Variable namens "theForm" verwenden - wenn das der Fall wäre, müsste der Wert der Variable die Zeichenfolge sein die ID deiner Form darstellend ... etwas wie var theForm = 'theForm'; und das kann sehr schnell wirklich verwirrend werden. Ich vermute, was du ausprobieren wolltest war: document.getElementById('theForm').reset(); - das funktioniert gut und ist im Prinzip dasselbe wie der Code von # 1.
  3. Diese Beispiele gehen alle davon aus, dass Ihr HTML etwa wie folgt aussieht: <form id="theForm"> ... </form> - Die ID "theForm" muss sich auf dem Formular-Tag und nicht auf einem Eingabe-Tag innerhalb des Formulars befinden.

Ich habe eine Geige erschaffen, die zeigt, dass diese Dinge funktionieren: Ссылка

    
Brian Oliver 04.10.2013 03:24
quelle

Tags und Links