&引用;“提交不是一项功能”;JavaScript中的错误

&引用;“提交不是一项功能”;JavaScript中的错误,javascript,html,dom,submit,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" typ

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

函数submitAction()
{
document.frmProduct.submit();
}
我也试过:

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

函数submitAction()
{
document.forms[“frmProduct”].submit();
}
两者都显示相同的错误:(


document.getElementById(“提交值”).onclick=submitAction;
函数submitAction()
{
document.getElementById(“frmProduct”).submit();
返回false;
}
编辑:我不小心把id调换了

你可以试试

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

功能提交(元素)
{
element.form.submit();
}
您没有多个同名表单吗?

使用getElementById:

document.getElementById ('frmProduct').submit ()
提交不是一项功能

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


命名按钮submit时,会覆盖表单上的
submit()
函数。

我在使用with母版页创建MVC应用程序时也遇到了同样的问题。 如上所述,尝试查找名称为“submit”的元素,但实际情况并非如此

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

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

onclick="return SubmitForm(this.form)"
对于js:

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

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

我使用的是

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

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

给表单元素命名为submit将简单地隐藏submit属性。
确保您没有名为submit的表单元素,您应该能够正常访问submit功能。

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

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

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

<form id="form_id_name"><button name="btnSubmit" form="form_id_name" /></form>

这个话题已经有很多答案了,但对我来说最有效的(也是最简单的一句话!)是对Neil E.Pearson在2013年4月21日发表的评论的修改:

如果您的提交按钮一直是#submit,您可以通过窃取另一个表单实例的submit()方法来绕过它

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

document.createElement('form').submit.call(document.getElementById(frmProduct));
可能的解决方案-
1.确保您没有任何其他名为/id的元素作为submit。
2.尝试将函数调用为
onClick=“return submitAction();”

3.
document.getElementById(“表单名称”).submit();
您应该使用以下代码:
$(文档).on(“就绪”,函数(){
document.frmProduct.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>

函数submitAction()
{
document.frmProduct.submit();
}
解决方案:

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

函数submitAction()
{
document.frmProduct.submit();
}

我也有同样的问题,只要从提交按钮中删除name=“submit”即可解决问题

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

更改为

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


删除名称属性希望它能起作用

很抱歉回答得太晚,但对于仍面临相同错误的人来说。要消除此错误,请执行以下操作:

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

提交表格
函数submitTheForm(){
document.getElementById(“提交表单”)。单击();
}
说明:

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


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

document.getElementById(“frmProduct”)。提交不是一个函数:(您是否有多个id为“frmProduct”的元素?将submitAction添加为onsubmit的处理程序,然后从中调用submit可能会创建一个无限循环。该处理程序应该与单击按钮相关联。向下投票的准确答案是吗?跛脚的家伙,请点击我们,以获得您正在出卖灵魂的那些分数for@Chad格兰特公司我不太同意。哪个浏览器会给你这条消息?你能发布完整的源代码吗?考虑到发布的代码在IE7和Chrome2中都适用于我,那么也许你没有发布的代码中有错误?也许你有一个名为submit或id为submit的字段,因此。submit()是否被该字段隐藏?当您在不同的元素中有相同的id=“frmProduct”时,会发生该错误。这里有一个简便的技巧。如果您的提交按钮一直是
#submit
,您可以通过窃取另一个表单实例的
submit()
方法来绕过它,例如:
document.createElement('form').submit.call(document.frmProduct)
。似乎每个人都必须以艰苦的方式学习这一点。如果面试问题做得好,我只是删除了class='submit'和Bob's your Aunty的名字,它起作用了!!我只是在这个问题上浪费了2-3个小时,非常感谢你的回答JavaScript确实是有史以来最糟糕的
HTMLFormElement.prototype.submit.call(表单)
同样有效虽然此代码片段可能会解决问题,但确实有助于提高您文章的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。另外,请尽量不要用解释性注释挤满您的代码,这会降低可读性代码和解释都很简单!你能解释一下这是如何解决OP的问题的吗?当然,在这种情况下(只有在这种情况下),问题在于
<button value='Submit Payment' ></button>
<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>