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;