使用 Javascript 提交表单不起作用

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/18902922/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-27 13:37:56  来源:igfitidea点击:

Submit form with Javascript doesn't work

javascripthtmlforms

提问by peastman

I have a simple form for uploading a file. If I use an ordinary submit button, everything works as expected:

我有一个用于上传文件的简单表单。如果我使用普通的提交按钮,一切都会按预期进行:

<form id="mainform" method="post" action="/" enctype="multipart/form-data">
...
<input type="submit" id="submit" value="Analyze File"/>
</form>

But if I change it to an ordinary button and use Javascript to submit the form, nothing happens:

但是,如果我将其更改为普通按钮并使用 Javascript 提交表单,则没有任何反应:

<input type="button" id="submit" value="Analyze File" onclick="document.getElementById('mainform').submit()"/>

I verified that the onclick handler really is getting called, and looking up the form works correctly. For example, if I change it to onclick="alert(document.getElementById('mainform').action)", the alert comes up as expected and shows the target URL of the form. But for some reason, the call to submit() simply doesn't submit the form.

我验证了 onclick 处理程序确实被调用了,并且查找表单工作正常。例如,如果我将其更改为onclick="alert(document.getElementById('mainform').action)",警报会按预期出现并显示表单的目标 URL。但是出于某种原因,对 submit() 的调用根本没有提交表单。

回答by Joe Enos

The issue is your submitbutton. Its id is submit, which means that document.getElementById("mainform").submitrepresents the button with ID of submit, not the submitfunction.

问题是你的submit按钮。它的 id 是submitdocument.getElementById("mainform").submit表示代表的是 ID 为 的按钮submit,而不是submit函数。

You just need to change the ID for that button, and you're all good.

您只需要更改该按钮的 ID,就可以了。

回答by Jonathan Lonowski

You have a naming conflict between the .submit()method and the:

您在.submit()方法和以下内容之间存在命名冲突:

<input type="submit" id="submit" value="Analyze File"/>

By having that id, a reference to it is being assigned to the submitproperty of the <form>, which replaces the method.

通过拥有 that id,对它的引用被分配给 的submit属性,该属性<form>替换了该方法。

If you rename the <input>, you should be able to .submit()as expected:

如果您重命名<input>,您应该能够.submit()按预期进行:

<input type="submit" id="mainform_submit" value="Analyze File"/>