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:
<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 es 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.
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:
<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 es 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.
- @kol: w3schools is not a good source for JavaScript code. Plus, how does his code differ from that? He's pretty much doing the same thing, – gen_Eric Commented Sep 19, 2013 at 19:14
2 Answers
Reset to default 10The issue is your submit
button. Its id is submit
, which means that document.getElementById("mainform").submit
represents the button with ID of submit
, not the submit
function.
You just need to change the ID for that button, and you're all good.
You have a naming conflict between the .submit()
method and the:
<input type="submit" id="submit" value="Analyze File"/>
By having that id
, a reference to it is being assigned to the submit
property of the <form>
, which replaces the method.
If you rename the <input>
, you should be able to .submit()
as expected:
<input type="submit" id="mainform_submit" value="Analyze File"/>