对象#<HTMLFormElement>的属性"submit"不是函数

And*_*est 50 html javascript forms jquery submit

任何人都可以向我解释这个错误意味着什么?对此有任何帮助,我将非常感激.

<form class="form" id="form" action="/mailer.php" method="post">
Run Code Online (Sandbox Code Playgroud)

我正在使用的Jquery代码就是这个.

$('#form').submit();  
Run Code Online (Sandbox Code Playgroud)

xda*_*azz 139

检查表单以查看是否有HTMLInputElementid或名称submit.

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

例:

<form class="form" id="form" action="/mailer.php" method="post">
    ?<input type="button" name="submit" value="go"/>
</form>???????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

JS:

?console.log($("#form")[0].submit)?;?  // will be the button element, not the submit function.
Run Code Online (Sandbox Code Playgroud)

jQuery的.submit()方法将调用.submit()原始的dom元素,因此会发生错误.

  • 有一个'模拟'提交输入type ="button"name ="submit"所以..我将删除名称,看看是否有效. (3认同)
  • 这不是一个错误.这就是底层DOM的工作原理.有一个解决方法,但它在jQuery 1.9及更低版本正式支持的Internet Explorer版本中不起作用. (2认同)
  • 只是很难找到同样问题的解决方案,非常感谢! (2认同)
  • 很棒的接球,应该可以避免人们用头撞桌子。 (2认同)

ain*_*kna 28

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

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

HTMLFormElement.prototype.submit.call($('#form')[0]);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢堆!这对我有用!具有讽刺意味的是,这个答案没有票. (4认同)

Ale*_*lds 6

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