<!DOCTYPE HTML> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=561636 --> <head> <title>Test for Bug 561636</title> <script src="/tests/SimpleTest/SimpleTest.js"></script> <script src="/tests/SimpleTest/EventUtils.js"></script> <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> </head> <body> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=561636">Mozilla Bug 561636</a> <p id="display"></p> <iframe style='width:50px; height: 50px;' name='t'></iframe> <iframe style='width:50px; height: 50px;' name='t2' id='i'></iframe> <div id="content"> <form target='t' action='data:text/html,'> <input required> <input id='a' type='submit'> </form> <form target='t' action='data:text/html,'> <input type='checkbox' required> <button id='b' type='submit'></button> </form> <form target='t' action='data:text/html,'> <input id='c' required> </form> <form target='t' action='data:text/html,'> <input> <input id='s2' type='submit'> </form> <form target='t2' action='data:text/html,'> <input required> </form> </div> <pre id="test"> <script type="application/javascript"> /** Test for Bug 561636 **/ SimpleTest.waitForExplicitFinish(); addLoadEvent(runTest); function runTest() { var formSubmitted = [ false, false ]; var invalidHandled = false; // Initialize document.forms[0].addEventListener('submit', function(aEvent) { formSubmitted[0] = true; }, {once: true}); document.forms[1].addEventListener('submit', function(aEvent) { formSubmitted[1] = true; }, {once: true}); document.forms[2].addEventListener('submit', function(aEvent) { formSubmitted[2] = true; }, {once: true}); document.forms[3].addEventListener('submit', function(aEvent) { formSubmitted[3] = true; ok(!formSubmitted[0], "Form 1 should not have been submitted because invalid"); ok(!formSubmitted[1], "Form 2 should not have been submitted because invalid"); ok(!formSubmitted[2], "Form 3 should not have been submitted because invalid"); ok(formSubmitted[3], "Form 4 should have been submitted because valid"); // Next test. document.forms[4].submit(); }, {once: true}); document.forms[4].elements[0].addEventListener('invalid', function(aEvent) { invalidHandled = true; }, {once: true}); document.getElementById('i').addEventListener('load', function(aEvent) { SimpleTest.executeSoon(function () { ok(true, "Form 5 should have been submitted because submit() has been used even if invalid"); ok(!invalidHandled, "Invalid event should not have been sent"); SimpleTest.finish(); }); }, {once: true}); document.getElementById('a').click(); document.getElementById('b').click(); var c = document.getElementById('c'); c.focus(); synthesizeKey("KEY_Enter"); document.getElementById('s2').click(); } </script> </pre> </body> </html>