From ca6526413e7e8534c0df70707c71148dfb395dfe Mon Sep 17 00:00:00 2001 From: Marnen Laibow-Koser Date: Mon, 9 Jun 2014 11:33:10 -0400 Subject: [PATCH 1/2] Form inputs can use the form attribute too. --- src/rails.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rails.js b/src/rails.js index 837f45a2..579d742c 100644 --- a/src/rails.js +++ b/src/rails.js @@ -34,7 +34,7 @@ formSubmitSelector: 'form', // Form input elements bound by jquery-ujs - formInputClickSelector: 'form input[type=submit], form input[type=image], form button[type=submit], form button:not([type])', + formInputClickSelector: 'form input[type=submit], form input[type=image], form button[type=submit], form button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])', // Form input elements disabled during form submission disableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled', From 05c9fcab8e29c7c712f2661ccfd51fe73b3e9e60 Mon Sep 17 00:00:00 2001 From: Marnen Laibow-Koser Date: Tue, 8 Jul 2014 12:34:52 -0400 Subject: [PATCH 2/2] Add test case for input with form ID. --- test/public/test/data-confirm.js | 33 ++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/test/public/test/data-confirm.js b/test/public/test/data-confirm.js index b84dd280..d29735fa 100644 --- a/test/public/test/data-confirm.js +++ b/test/public/test/data-confirm.js @@ -14,6 +14,18 @@ module('data-confirm', { text: 'Click me' })); + $('#qunit-fixture').append($('
', { + id: 'confirm', + action: '/echo', + 'data-remote': 'true' + })); + + $('#qunit-fixture').append($('', { + type: 'submit', + form: 'confirm', + 'data-confirm': 'Are you absolutely sure?' + })); + this.windowConfirm = window.confirm; }, teardown: function() { @@ -105,6 +117,27 @@ asyncTest('clicking on a button with data-confirm attribute. Confirm No.', 3, fu }, 50); }); +asyncTest('clicking on a submit button with form and data-confirm attributes. Confirm No.', 3, function() { + var message; + // auto-decline: + window.confirm = function(msg) { message = msg; return false }; + + $('input[type=submit][form]') + .bind('confirm:complete', function(e, data) { + App.assertCallbackInvoked('confirm:complete'); + ok(data == false, 'confirm:complete passes in confirm answer (false)'); + }) + .bind('ajax:beforeSend', function(e, data, status, xhr) { + App.assertCallbackNotInvoked('ajax:beforeSend'); + }) + .trigger('click'); + + setTimeout(function() { + equal(message, 'Are you absolutely sure?'); + start(); + }, 50); +}); + asyncTest('binding to confirm event of a link and returning false', 1, function() { // redefine confirm function so we can make sure it's not called window.confirm = function(msg) {