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.
Für ein HTML-Formular wie dieses:
%Vor% Bei Verwendung von document.getElementById("theForm").reset()
, wenn Sie einen js-Fehler erhalten, der
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 ().
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.
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
GLEICHE DEMO ABER MIT name!="reset"
- kein Fehler; Code funktioniert
GLEICHE DEMO, ABER MIT id="reset"
- Konsole überprüfen
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:)
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".
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.
Also ... ich denke, hier gehen ein paar Dinge vor sich.
$('#theForm')[0].reset();
sehr gut. 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. <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: Ссылка