diff --git a/src/mouse.js b/src/mouse.js index e42e399e..1df4af27 100644 --- a/src/mouse.js +++ b/src/mouse.js @@ -46,9 +46,8 @@ steal('./synthetic.js', function (Syn) { } //submit a form - if (!(Syn.support.clickSubmits) && (nodeName === "input" && - type === "submit") || - nodeName === 'button') { + if (!(Syn.support.clickSubmits) && ((nodeName == "input" || + nodeName == 'button') && type == "submit")) { var form = Syn.closest(element, "form"); if (form) { diff --git a/test/qunit/mouse_test.js b/test/qunit/mouse_test.js index e9109527..83ef7ce1 100644 --- a/test/qunit/mouse_test.js +++ b/test/qunit/mouse_test.js @@ -15,6 +15,8 @@ steal("src/synthetic.js", function (Syn) { "" + "click me" + "click me" + + "" + + "" + ""; }, @@ -57,10 +59,11 @@ steal("src/synthetic.js", function (Syn) { return false; }; st.bind(st.g("outer"), "submit", submitf); + Syn.trigger("click", {}, st.g("submitButton")); Syn.trigger("click", {}, st.g("submit")); Syn("submit", {}, "outer"); - equal(submit, 2, "Click on submit"); + equal(submit, 3, "Click on submit"); //make sure clicking the div does not submit the form var click = 0, @@ -75,12 +78,31 @@ steal("src/synthetic.js", function (Syn) { Syn.trigger("click", {}, st.g("submit")); - equal(submit, 2, "Submit prevented"); + equal(submit, 3, "Submit prevented"); equal(click, 1, "Clicked"); st.unbinder("outer", "submit", submitf); st.unbinder("inner", "click", clickf); }); + + test("Click button[type=button] doesn't submit form", function() { + var submit = 0, + submitf = function (ev) { + submit++; + if (ev.preventDefault) { + ev.preventDefault(); + } + ev.returnValue = false; + return false; + }; + st.bind(st.g("outer"), "submit", submitf); + Syn.trigger("click", {}, st.g("button")); + + equal(submit, 0, "No submit called"); + + st.unbinder("outer", "submit", submitf); + }); + test("Click Checkboxes", function () { var checkbox = 0;