2012-09-22 4 views
49

Kann mir jemand erklären, was dieser Fehler bedeutet? Ich würde es sehr für jede Art von Hilfe mit diesem schätzen.Eigenschaft 'submit' von Objekt # <HTMLFormElement> ist keine Funktion

<form class="form" id="form" action="/mailer.php" method="post"> 

Der Jquery-Code, den ich dafür verwende, ist dies.

$('#form').submit(); 
+1

Versuche '$ mit ('# Form') [0] .submit();' oder einfach 'Dokument .getElementById ('form'). submit(); '.. BTW, Ihr aktueller Code sollte eigentlich funktionieren. – techfoobar

+2

Es scheint, dass es auf Ihrer Seite einen Konflikt gibt, prototype/mootools/...? – undefined

+0

Ich werde die erste Option in nur einem Moment versuchen. Zweite Antwort ... jquery.min.js –

Antwort

138

Überprüfen Sie die Form, um zu sehen, ob es eine HTMLInputElement mit ID oder der Name ist submit ist.

gesetzt Dies ist eine Eigenschaft submit zum HTMLFormElement, so dass die submit Funktion, die nicht ausgeführt werden kann, in dem Prototyp des Formelementes ist.

Beispiel:

<form class="form" id="form" action="/mailer.php" method="post"> 
    ​<input type="button" name="submit" value="go"/> 
</form>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

js:

​console.log($("#form")[0].submit)​;​ // will be the button element, not the submit function. 

jQuery .submit() Methode wird die .submit() auf dem ursprünglichen dom Element nennen, so dass der Fehler passieren wird.

+3

Es gibt eine 'Mock' submit Eingangstyp = "button" name = "submit" so .. ich werde den Namen entfernen und sehen, ob das funktioniert. –

+0

@AndrewAllenWest Ja, das muss der Grund sein. – xdazz

+0

Das hat den Trick! Vielen Dank. –

6

Wenn Sie eine Schaltfläche oder eine Eingabe mit dem Namen senden oder ID senden haben, habe ich Fehler in IE gesehen. Stellen Sie sicher, dass Ihre Eingaben korrekt benannt sind. Hier ist ein Artikel darüber http://bugs.jquery.com/ticket/1414

27

xdazz erklärte das Problem gut.

können Sie verwenden eine native Methode von HTMLFormElement einreichen, um ein Problem zu umgehen:

HTMLFormElement.prototype.submit.call($('#form')[0]); 
+3

Vielen Dank! Das hat für mich funktioniert! Ironischerweise hat diese Antwort keine Abstimmungen. – JohnnyQ

+1

Danke für die Problemumgehung! Dies ist großartig, um Formulare in der Konsole auszuführen, wenn sie dieses Problem haben ... Was bei einem IT-Kommentarformular der Fall war ... –

+0

Dies ist eine gute Alternative, wenn die Lösung von xdazz nicht ausreicht! – Manatax