对象#<HTMLFormElement> 的属性“提交”不是函数
Posted
技术标签:
【中文标题】对象#<HTMLFormElement> 的属性“提交”不是函数【英文标题】:Property 'submit' of object #<HTMLFormElement> is not a function 【发布时间】:2012-09-14 11:47:48 【问题描述】:谁能解释一下这个错误是什么意思?我将不胜感激任何形式的帮助。
<form class="form" id="form" action="/mailer.php" method="post">
我使用的 Jquery 代码是这个。
$('#form').submit();
【问题讨论】:
尝试使用$('#form')[0].submit();
或简单地使用document.getElementById('form').submit();
..顺便说一句,您当前的代码应该可以正常工作..
你的页面好像有冲突,prototype/mootools/...?
我马上试试第一个选项。第二次回复... jquery.min.js
你要关闭你的表单</form>
吗?
@techfoobar 他是通过ID
选择的。无论如何它只会得到第一个匹配的元素
【参考方案1】:
查看表单,查看是否有htmlInputElement
id 或名称为submit
。
这会将属性submit
设置为HTMLFormElement
,因此表单元素原型中的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()
方法会在原dom元素上调用.submit()
,所以会报错。
【讨论】:
有一个“模拟”提交输入 type="button" name="submit" 所以..我会删除名称,看看是否有效。 @AndrewAllenWest 是的,一定是这个原因。 这不是错误。这就是底层 DOM 的工作方式。有一种变通方法,但它不适用于 jQuery 1.9 及更低版本正式支持的 Internet Explorer 版本。 刚刚找到解决同样问题的方法非常困难,非常感谢! 很好的抓地力,应该可以避免人们用头撞桌子。【参考方案2】:xdazz很好地解释了这个问题。
您可以使用 HTMLFormElement 的原生 submit 方法来解决问题:
HTMLFormElement.prototype.submit.call($('#form')[0]);
【讨论】:
非常感谢!这对我有用!具有讽刺意味的是,这个答案没有赞成票。 感谢您的解决方法!如果他们有这个问题,在控制台中执行表单非常好...... IT cmets 表单就是这种情况...... 如果xdazz的解决方案不够用,这是一个不错的选择!【参考方案3】:如果您有一个名为 submit 或 id submit 的按钮或输入,我在 IE 中看到了错误。确保您的输入正确命名。这是一篇关于它的文章http://bugs.jquery.com/ticket/1414
【讨论】:
以上是关于对象#<HTMLFormElement> 的属性“提交”不是函数的主要内容,如果未能解决你的问题,请参考以下文章
函数未在 HTMLFormElement.onsubmit 中定义 [重复]