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

IT技术 javascript html dom submit
2021-01-28 09:36:45

谁能告诉我这段代码出了什么问题?我尝试使用 JavaScript 提交表单,但显示错误“.submit is not a function”。有关代码的更多详细信息,请参见下文:

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

两者都向我展示了相同的错误:(

6个回答

提交不是一个函数

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

当您将按钮命名为提交时,您将覆盖submit()表单上的功能。

我只是在这个问题上浪费了 2-3 个小时,非常感谢您的回答
2021-03-21 09:36:45
JavaScript 真的是有史以来最糟糕的
2021-03-22 09:36:45
我只是删除了 name='submit' 并且 Bob 是你的阿姨,它起作用了!!
2021-03-23 09:36:45
似乎每个人都必须通过艰苦的方式来学习这一点。会是一个很好的面试问题
2021-03-29 09:36:45
这是一个方便的技巧。如果您坚持提交按钮为#submit,则可以通过窃取另一个表单实例的submit()方法来绕过它,例如:document.createElement('form').submit.call(document.frmProduct)
2021-04-04 09:36:45
<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>

编辑:我不小心交换了 id 的周围

您是否有多个 ID 为“frmProduct”的元素?
2021-03-15 09:36:45
document.getElementById("frmProduct").submit 不是一个函数 :(
2021-03-18 09:36:45
@Chad Grant - 完全同意。
2021-03-22 09:36:45
添加 submitAction 作为 onsubmit 的处理程序,然后从中调用 submit 可能会创建无限循环。处理程序应该与按钮的 onclick 相关联。
2021-03-29 09:36:45
拒绝准确的答案是吧?跛脚的家伙,踩我们来获得那些你出卖灵魂的积分
2021-04-07 09:36:45

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

function submitForm(form) {
    const submitFormFunction = Object.getPrototypeOf(form).submit;
    submitFormFunction.call(form);
}
HTMLFormElement.prototype.submit.call(form) 也有效
2021-04-02 09:36:45

确保没有其他同名的表格,并确保表格中没有name="submit"id="submit"

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

就我而言,它在我的页面上创建了多个标签,因此在引用正确表单时存在一些问题。

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

onclick="return SubmitForm(this.form)"

并使用 js:

function SubmitForm(frm) {
    frm.submit();
}
这在他的情况下不起作用,因为他有一个名为“submit”的元素,它有效地替换了提交功能......
2021-03-23 09:36:45