JavaScript中的“提交不是函数”错误

谁能告诉我这个代码出了什么问题? 我试图用JavaScript提交表单,但显示“.submit不是函数”错误。 请参阅下面的代码的更多细节:

<form action="product.php" method="get" name="frmProduct" id="frmProduct" enctype="multipart/form-data"> <input onclick="submitAction()" id="submit_value" type="button" name="submit_value" value=""> </form> <script type="text/javascript"> function submitAction() { document.frmProduct.submit(); } </script> 

我也试过这个:

 <script type="text/javascript"> function submitAction() { document.forms["frmProduct"].submit(); } </script> 

两个显示我相同的错误:(

提交不是一个函数

意味着您命名了您的提交button或其他元素submit 。 将该button重命名为btnSubmit ,您的呼叫将神奇地工作。

当您命名button提交时,您将覆盖表单上的submit()函数。

 <form action="product.php" method="post" name="frmProduct" id="frmProduct" enctype="multipart/form-data"> <input id="submit_value" type="button" name="submit_value" value=""> </form> <script type="text/javascript"> document.getElementById("submit_value").onclick = submitAction; function submitAction() { document.getElementById("frmProduct").submit(); return false; } </script> 

编辑:我不小心换了身份证的周围

当我使用母版创buildMVC应用程序时,我遇到了同样的问题。 试着用'submit'作为名字来查找元素,但事实并非如此。

对于我的情况,它创build了我的网页上的多个标签,所以有一些问题引用了正确的forms。

要解决这个问题,我将让button处理哪个表单对象使用:

 onclick="return SubmitForm(this.form)" 

和js:

 function SubmitForm(frm) { frm.submit(); } 

确保不存在具有相同名称的其他表单,并确保表单中没有名称=“submit”或id =“submit”。

如果你没有机会改变name="submit"你也可以这样提交表单:

 function submitForm(form) { var submitFormFunction = Object.getPrototypeOf(form).submit; submitFormFunction.call(form); } 

我用的是

 var enviar = document.getElementById("enviar"); enviar.type = "submit"; 

只是因为一切都没有工作。

提交表单元素的提交名称将简单地影射提交属性。 确保你没有名称提交的表单元素,你应该能够访问提交function就好了。

我的解决scheme是设置button的“表单”属性

 <form id="form_id_name"><button name="btnSubmit" form="form_id_name" /></form> 

或者是js:

 YOURFORMOBJ.getElementsByTagName("button")[0].setAttribute("form", "form_id_name"); YOURFORMOBJ.submit(); 

这个话题已经有了很多的答案,但对我来说最好的(也是最简单的 – 一行!)是对Neil E. Pearson 2013年4月21日发表的评论的修改:

如果您的提交button被#submit阻塞,您可以通过窃取另一个表单实例的submit()方法来绕过它。

我修改了他的方法,以及对我有用的东西:

document.createElement('form').submit.call(document.getElementById(frmProduct));

你可以试试

 <form action="product.php" method="get" name="frmProduct" id="frmProduct" enctype="multipart/form-data"> <input onclick="submitAction(this)" id="submit_value" type="button" name="submit_value" value=""> </form> <script type="text/javascript"> function submitAction(element) { element.form.submit(); } </script> 

你不是有多个同名的表单吗?

使用getElementById:

 document.getElementById ('frmProduct').submit ()