Skip to content

Commit 0c1aa10

Browse files
committed
Merge pull request #377 from marnen/more-form-inputs
Form inputs can use the form attribute too
2 parents e2123e0 + 05c9fca commit 0c1aa10

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

src/rails.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
formSubmitSelector: 'form',
3535

3636
// Form input elements bound by jquery-ujs
37-
formInputClickSelector: 'form input[type=submit], form input[type=image], form button[type=submit], form button:not([type])',
37+
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])',
3838

3939
// Form input elements disabled during form submission
4040
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',

test/public/test/data-confirm.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,18 @@ module('data-confirm', {
1414
text: 'Click me'
1515
}));
1616

17+
$('#qunit-fixture').append($('<form />', {
18+
id: 'confirm',
19+
action: '/echo',
20+
'data-remote': 'true'
21+
}));
22+
23+
$('#qunit-fixture').append($('<input />', {
24+
type: 'submit',
25+
form: 'confirm',
26+
'data-confirm': 'Are you absolutely sure?'
27+
}));
28+
1729
this.windowConfirm = window.confirm;
1830
},
1931
teardown: function() {
@@ -105,6 +117,27 @@ asyncTest('clicking on a button with data-confirm attribute. Confirm No.', 3, fu
105117
}, 50);
106118
});
107119

120+
asyncTest('clicking on a submit button with form and data-confirm attributes. Confirm No.', 3, function() {
121+
var message;
122+
// auto-decline:
123+
window.confirm = function(msg) { message = msg; return false };
124+
125+
$('input[type=submit][form]')
126+
.bind('confirm:complete', function(e, data) {
127+
App.assertCallbackInvoked('confirm:complete');
128+
ok(data == false, 'confirm:complete passes in confirm answer (false)');
129+
})
130+
.bind('ajax:beforeSend', function(e, data, status, xhr) {
131+
App.assertCallbackNotInvoked('ajax:beforeSend');
132+
})
133+
.trigger('click');
134+
135+
setTimeout(function() {
136+
equal(message, 'Are you absolutely sure?');
137+
start();
138+
}, 50);
139+
});
140+
108141
asyncTest('binding to confirm event of a link and returning false', 1, function() {
109142
// redefine confirm function so we can make sure it's not called
110143
window.confirm = function(msg) {

0 commit comments

Comments
 (0)