diff options
| author | Mark Otto <[email protected]> | 2016-11-26 01:18:21 -0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2016-11-26 01:18:21 -0800 |
| commit | b6b8280938917659571b64c01bbf7bcb01b01e55 (patch) | |
| tree | bbf46491f8390a2960b55853bcafba95fed685c9 | |
| parent | ce31f54c368ec7c073d8a1c2ab063461951f58eb (diff) | |
| parent | 866e99b00cb12dcfa0d9b88edf4f4d0ef06ca3f3 (diff) | |
| download | bootstrap-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.js | 2 | ||||
| -rw-r--r-- | js/tests/unit/button.js | 20 |
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">' |
