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 ()