JavaScript中的"提交不是函数"错误

Jin*_*ong 248 html javascript dom submit

谁能告诉我这段代码出了什么问题?我尝试使用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>
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

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

两个都显示我同样的错误:(

epa*_*llo 693

提交不是一个功能

表示您将提交按钮或其他元素命名submit.将按钮重命名为btnSubmit,您的通话将神奇地工作.

当您将按钮命名为submit时,将覆盖submit()表单上的函数.

  • 这是一个方便的技巧.如果您坚持使用提交按钮为`#submit`,则可以通过窃取另一个表单实例的`submit()`方法来解决它,例如:`document.createElement('form').submit.call(document. frmProduct)`. (52认同)
  • 似乎每个人都必须以艰难的方式学习这一个.会很好地面试问题 (32认同)
  • 我只是删除了名称='提交',鲍勃是你的阿姨它工作了!! (8认同)
  • 我刚刚浪费了2-3个小时来解决这个问题,非常感谢你的回答 (3认同)
  • JavaScript 真的是有史以来最糟糕的 (3认同)
  • 惊讶我从来没有碰到这个,但唉,这就是问题所在! (2认同)
  • 万一它可以帮助其他任何人:我在按钮上有一个'id ='submit'`正在抛弃它(删除/重命名name属性是不够的). (2认同)

Cha*_*ant 11

<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>
Run Code Online (Sandbox Code Playgroud)

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


小智 8

确保没有其他具有相同名称的表单,并确保表单中没有name ="submit"或id ="submit".


Ter*_*biy 7

如果您没有机会进行更改,name="submit"您也可以通过以下方式提交表单:

function submitForm(form) {
    var submitFormFunction = Object.getPrototypeOf(form).submit;
    submitFormFunction.call(form);
}
Run Code Online (Sandbox Code Playgroud)

  • `HTMLFormElement.prototype.submit.call(form)`也可以 (3认同)

Mes*_*Qin 6

form.submit()如果表单没有<button type="submit">submit</button>. form元素属于HTMLFormElement接口,因此,我们可以直接从原型调用,该方法始终适用于任何表单元素。

HTMLFormElement.prototype.submit.call(form)
Run Code Online (Sandbox Code Playgroud)


小智 5

当我使用母版页创建MVC应用程序时,我遇到了同样的问题.尝试使用"提交"作为上面提到的名称寻找元素但事实并非如此.

对于我的情况,它在我的页面上创建了多个标签,因此有一些问题引用了正确的表单.

要解决这个问题,我会让按钮处理要使用的表单对象:

onclick="return SubmitForm(this.form)"
Run Code Online (Sandbox Code Playgroud)

和js:

function SubmitForm(frm) {
    frm.submit();
}
Run Code Online (Sandbox Code Playgroud)