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

时间:2009-05-07 05:41:21

标签: javascript html 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>

我也试过这个:

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

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

16 个答案:

答案 0 :(得分:632)

  

提交不是功能

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

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

答案 1 :(得分: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>
编辑:我不小心换了身份证的

答案 2 :(得分:7)

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

答案 3 :(得分:5)

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

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

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

onclick="return SubmitForm(this.form)"

和js:

function SubmitForm(frm) {
    frm.submit();
}

答案 4 :(得分:5)

如果您没有机会更改cell.people = self.memory.personEntities.flatMap({$0}) ,您也可以通过以下方式提交表单:

name="submit"

答案 5 :(得分:2)

为表单元素提供提交名称将简单地影响提交属性。 确保您没有名称为submit的表单元素,并且您应该可以正常访问提交函数。

答案 6 :(得分:2)

本主题已有很多答案,但对我来说效果最好(最简单 - 一行!)的是对Neil E. Pearson 2013年4月21日发表的评论的修改:

  

如果你的提交按钮被#submit困住,你可以通过窃取另一个表单实例的submit()方法来绕过它。

我对他的方法的修改,以及对我有用的东西:

document.createElement('form').submit.call(document.getElementById(frmProduct));

答案 7 :(得分:2)

实际上,解决方案非常简单...

原文:

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

答案 8 :(得分:2)

很抱歉回答晚了,但对于那些仍然面临同样错误的人。摆脱这个错误:

<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() 正在访问提交 input 元素并调用其上的点击事件,从而导致 form 提交。

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

答案 9 :(得分:1)

可能的解决方案 -
1.确保您没有任何其他名称/ ID为提交的元素 2.尝试将该功能称为onClick = "return submitAction();"
3。document.getElementById("form-name").submit();

答案 10 :(得分:0)

我使用的是

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

因为其他一切都不起作用。

答案 11 :(得分:0)

我的解决方案是设置&#34;表格&#34;按钮的属性

text

或是js:

gx <-
  ggplot(mtl
         , aes(Var1, Var2
               , fill = Correlation
               , text = paste("P-val = ", round(`P-Value`, 4)))) +
  geom_tile() + 
  scale_fill_gradient(low = "cyan",  high = "red")
ggplotly(gx)

答案 12 :(得分:0)

您应该使用以下代码:

$(document).on("ready", function () {
       
        document.frmProduct.submit();
    });

答案 13 :(得分:0)

我遇到了同样的问题,并且解决了我的问题,只需从提交按钮中删除name =“ submit”。

<button name='submit' value='Submit Payment' ></button>

更改为

<button value='Submit Payment' ></button>

删除名称属性,希望它能正常工作

答案 14 :(得分:-1)

你可以尝试

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

您是否有多个同名的表格?

答案 15 :(得分:-1)

使用getElementById:

document.getElementById ('frmProduct').submit ()