谁能告诉我这段代码出了什么问题?我尝试使用 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 ()
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top