aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Otto <[email protected]>2016-11-26 01:18:21 -0800
committerGitHub <[email protected]>2016-11-26 01:18:21 -0800
commitb6b8280938917659571b64c01bbf7bcb01b01e55 (patch)
treebbf46491f8390a2960b55853bcafba95fed685c9
parentce31f54c368ec7c073d8a1c2ab063461951f58eb (diff)
parent866e99b00cb12dcfa0d9b88edf4f4d0ef06ca3f3 (diff)
downloadbootstrap-b6b8280938917659571b64c01bbf7bcb01b01e55.tar.xz
bootstrap-b6b8280938917659571b64c01bbf7bcb01b01e55.zip
Merge pull request #18900 from vlastikcz/v4-dev-buttonChange
Button toggling - trigger change event on input. Fixes #16673, fixes #17599.
-rw-r--r--js/src/button.js2
-rw-r--r--js/tests/unit/button.js20
2 files changed, 21 insertions, 1 deletions
diff --git a/js/src/button.js b/js/src/button.js
index 8b9511765..45e1424ff 100644
--- a/js/src/button.js
+++ b/js/src/button.js
@@ -90,7 +90,7 @@ const Button = (($) => {
if (triggerChangeEvent) {
input.checked = !$(this._element).hasClass(ClassName.ACTIVE)
- $(this._element).trigger('change')
+ $(input).trigger('change')
}
input.focus()
diff --git a/js/tests/unit/button.js b/js/tests/unit/button.js
index 7fd86e13a..d87b57610 100644
--- a/js/tests/unit/button.js
+++ b/js/tests/unit/button.js
@@ -72,6 +72,26 @@ $(function () {
assert.strictEqual($btn.attr('aria-pressed'), 'true', 'btn aria-pressed state is true')
})
+ QUnit.test('should trigger input change event when toggled button has input field', function (assert) {
+ assert.expect(1)
+ var done = assert.async()
+
+ var groupHTML = '<div class="btn-group" data-toggle="buttons">'
+ + '<label class="btn btn-primary">'
+ + '<input type="radio" id="radio" autocomplete="off">Radio'
+ + '</label>'
+ + '</div>'
+ var $group = $(groupHTML).appendTo('#qunit-fixture')
+
+ $group.find('input').on('change', function (e) {
+ e.preventDefault()
+ assert.ok(true, 'change event fired')
+ done()
+ })
+
+ $group.find('label').trigger('click')
+ })
+
QUnit.test('should check for closest matching toggle', function (assert) {
assert.expect(12)
var groupHTML = '<div class="btn-group" data-toggle="buttons">'