对象 #<HTMLFormElement> 的属性“提交”不是函数

IT技术 javascript jquery html forms submit
2021-02-25 00:44:03

谁能向我解释这个错误是什么意思?如果您对此有任何帮助,我将不胜感激。

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

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

$('#form').submit();  
3个回答

检查表单以查看是否有HTMLInputElementid 或 name 是submit

这将一个属性设置submitHTMLFormElement,所以submit不能被执行,其是在表格元件的原型函数。

例子:

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

只是很难找到同样问题的解决方案,非常感谢!
2021-04-24 00:44:03
很好的捕获,应该可以避免人们将头撞在桌子上。
2021-04-28 00:44:03
那不是错误。这就是底层 DOM 的工作方式。有一个变通方法,但它在 jQuery 1.9 及更低版本正式支持的 Internet Explorer 版本中不起作用。
2021-04-29 00:44:03
有一个 'mock' submit input type="button" name="submit" 所以..我会删除这个名字,看看是否有效。
2021-05-08 00:44:03
@AndrewAllenWest 是的,这一定是原因。
2021-05-12 00:44:03

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

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

HTMLFormElement.prototype.submit.call($('#form')[0]);
感谢您的解决方法!如果他们有这个问题,那么在控制台中执行表单是很好的...... IT 评论表单就是这种情况......
2021-04-21 00:44:03
如果 xdazz 的解决方案还不够,这是一个不错的选择!
2021-04-22 00:44:03
谢谢堆!这对我有用!具有讽刺意味的是,这个答案没有投票。
2021-04-29 00:44:03

如果您有一个按钮或名称为 submit 或 id submit 的输入,我在 IE 中看到了错误。确保您的输入正确命名。这是一篇关于它的文章http://bugs.jquery.com/ticket/1414