&引用;“提交不是一项功能”;JavaScript中的错误
有人能告诉我这个代码出了什么问题吗?我试图用JavaScript提交表单,但出现了一个错误。显示的“.submit不是函数”。有关代码的更多详细信息,请参见下文:&引用;“提交不是一项功能”;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
<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()
正在访问submitinput
元素,并调用其上的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>