JavaScript 中的“提交不是函数”错误
-
08-07-2019 - |
题
谁能告诉我这段代码出了什么问题?我尝试使用 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>
两者都向我显示相同的错误:(
解决方案
提交不是功能
表示您将提交按钮或其他元素命名为 submit
。将按钮重命名为 btnSubmit
,您的通话将神奇地工作。
当您将按钮命名为submit时,您将覆盖表单上的 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>
编辑:我不小心换了身份证的 确保没有其他具有相同名称的表单,并确保没有名称=&quot; submit&quot;或者id =“提交”在表格中。
如果您没有机会更改 name =&quot; submit&quot;
,您也可以这样提交表单:
function submitForm(form) {
var submitFormFunction = Object.getPrototypeOf(form).submit;
submitFormFunction.call(form);
}
当我使用母版页创建MVC应用程序时,我遇到了同样的问题。 尝试使用“提交”作为上面提到的名称寻找元素但事实并非如此。
对于我的情况,它在我的页面上创建了多个标签,因此有一些问题引用了正确的表单。
要解决这个问题,我会让按钮处理要使用的表单对象:
onclick="return SubmitForm(this.form)"
和js:
function SubmitForm(frm) {
frm.submit();
}
为表单元素提供提交名称将简单地影响提交属性。 确保你没有名称为submit的表单元素,你应该可以正常访问提交函数。
本主题已有很多答案,但对我来说效果最好(最简单 - 一行!)的是对Neil E. Pearson 2013年4月21日发表的评论的修改:
如果你的提交按钮被#submit困住,你可以通过窃取另一个表单实例的submit()方法来绕过它。
我对他的方法的修改,以及对我有用的东西:
。<代码>使用document.createElement( '形式')submit.call(的document.getElementById(frmProduct)); 代码>
事实上,解决方案很容易......
原件:
<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>
解决方案:
<form action="product.php" method="get" name="frmProduct" id="frmProduct"
enctype="multipart/form-data">
</form>
<!-- Place the button here -->
<input onclick="submitAction()" id="submit_value" type="button"
name="submit_value" value="">
<script type="text/javascript">
function submitAction()
{
document.frmProduct.submit();
}
</script>
可能的解决方案 -
1.确保您没有任何其他带有 name/id 的元素作为提交。
2.尝试将函数调用为 onClick = "return submitAction();"
3.document.getElementById("form-name").submit();
我使用的是
var enviar = document.getElementById("enviar");
enviar.type = "submit";
因为其他一切都不起作用。
我的解决方案是设置“形式”。按钮的属性
<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();
您应该使用此代码:
$(document).on("ready", function () {
document.frmProduct.submit();
});
你可以尝试
<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 ()