有人能告诉我这段代码出了什么问题吗?我试图用JavaScript提交一个表单,但是一个错误”。提交不是一个函数”。查看下面的代码的更多细节:

<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 type="submit">submit</button>. submit()将不起作用。表单元素属于HTMLFormElement接口,因此,我们可以直接从prototype调用,这个方法对任何表单元素都有效。

HTMLFormElement.prototype.submit.call(form)

其他回答

事实上,解决方法很简单……

原:

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

给表单元素一个名称submit将简单地掩盖submit属性。 确保表单元素中没有名称为submit的元素,这样就可以很好地访问submit函数。

抱歉回答晚了,但对于那些仍然面临同样错误的人。消除此错误:

<form method="POST">
  <input type="text"/>
  <input type="submit" id="submit-form" value="Submit Form" style="display: none;"/>
</form>

<!-- Other element that will submit the form -->
<button onclick="submitTheForm()">Submit the form</button>

<script>
function submitTheForm(){
  document.getElementById("submit-form").click();
}
</script>

解释:

javascript函数submitTheForm()正在访问提交输入元素并调用其上的click事件,从而导致表单提交。

这个解决方案是终身的,几乎100%兼容所有浏览器。

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

这个话题已经有很多答案了,但对我来说,最好的一个(也是最简单的——一行!)是对尼尔·e·皮尔森在2013年4月21日发表的评论的修改:

如果你的提交按钮是#submit,你可以通过窃取另一个表单实例的submit()方法来解决这个问题。

我对他的方法进行了修改,哪些对我有效:

文档字符串文字(“表单”)提交。call(文档getElementById (frmProduct));