I have a form on a page, something simple like:
<form action="form/submit" method="post">
<button type="submit">Submit</button>
</form>
It works in every single browser, including older versions of IE, BUT in IE11 it fails, with the tab stuck in a continuous loading loop, never changing to the "thank you" page after submission. HOWEVER, if I open the console, it DOES work.
I'm aware of the console.log issues IE has, and already am using:
if (!window.console) {
console = {
log: function() {}
};
}
to avoid it, which seems to be doing fine (as mentioned, every other IE works). Any insight as to where the issue might lie?
The problem appears when a form only has input elements without a name
attribute (or no input elements). I found a reference to the bug here, though it also happens in desktop mode and not just metro mode as the link claims:
http://connect.microsoft.com/IE/feedback/details/807447/ie-11-metro-version-submitting-form-fails-if-input-tag-has-no-name-attribute
The fix is to create a dummy <input type="hidden" name="dummy" value="something">
field (with a name and value set) before submitting the form.
The bug happens in all compatibility modes offered by IE11.
I just spent WAY too much time on this bug. The crazy part is, IE11 allow the form submission if you have the dev tools (f12) open. This is what I put before my submit button:
<input type="hidden" name="ie11sux" id="ie11sux" value="<?php echo md5(microtime()."ie11sux"); ?>"/>
It's a bug in IE11. You can fix it if you add a name attribute to the button, like:
<button type="submit" name="foo" ...
A form without named element will result in an infinite loop on submit on IE11 + W8.1. To fix that, simply add an attribute name to the button:
<form action="form/submit" method="post">
<input type="submit" name="cm" value="Submit">
</form>
This doesn't directly relate to OP's question, but is an IE-only form submission issue:
If you happen to set form.prop('disabled', true)
during the submit event, other browsers will still send the form data, but IE will not - it'll send an empty request body.
For me, I had empty hidden fields that were marked required. Pretty stupid but it was the solution that worked for me.
For IE11, there is :
event.returnValue = false;
Checking if event.preventDefault exists prevent an eventual error :
event.preventDefault ? event.preventDefault() : (event.returnValue = false);
Your problem is caused by a issue with .net 4 on server side.
Please read this: 'WebForm_DoPostBackWithOptions' is undefined in IE11 Preview
You can enable your IE debug function and try submit, you may see the error: WebForm_DoPostBackWithOptions
I fixed a similar submit problem for IE11 by patch this:
http://support.microsoft.com/kb/2836939