有人能告诉我这段代码出了什么问题吗?我试图用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>

两者都显示了相同的错误:(


当前回答

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

原:

    <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.确保没有任何其他名称/id作为提交的元素。 2.尝试调用函数onClick = "return submitAction();" 3. . getelementbyid(“表单名称”)。submit ();

我用的是

var enviar = document.getElementById("enviar");
enviar.type = "submit"; 

只是因为其他一切都不管用。

我的解决方案是设置按钮的“form”属性

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

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

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

function submitForm(form) {
    const submitFormFunction = Object.getPrototypeOf(form).submit;
    submitFormFunction.call(form);
}