对象#<HTMLFormElement>的属性'提交'不是一个函数

任何人都可以向我解释这个错误是什么意思? 我会很感激任何帮助。

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

我使用的Jquery代码是这样的。

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

检查表单以查看是否存在具有id或name的HTMLInputElement submit

这将设置属性submitHTMLFormElement ,所以在表单元素的原型中的submitfunction不能被执行。

例:

 <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()方法将调用原始dom元素上的.submit() ,所以会发生错误。

xdazz很好地解释了这个问题。

您可以使用HTMLFormElement的本地提交方法来解决问题:

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

如果你有一个button或input名称提交或ID提交,我已经看到在IE中的错误。 确保您的input正确命名。 这里有一篇关于它的文章http://bugs.jquery.com/ticket/1414