Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/bootstrap.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorMike Vastola <mike@vasto.la>2018-12-10 11:40:08 +0300
committerXhmikosR <xhmikosr@gmail.com>2018-12-10 11:40:08 +0300
commitfc15c4c4ce132e70eb67335dfe840c3f0a80dae4 (patch)
tree7fd8b5c63efdbfb5d96670c648cb00300d850e90 /js
parent385ce1c961b4acfbe11f7029542a7df83075725c (diff)
Change button checkbox/radios to ignore hidden input fields (#27802)
Diffstat (limited to 'js')
-rw-r--r--js/src/button.js2
-rw-r--r--js/tests/unit/button.js23
2 files changed, 24 insertions, 1 deletions
diff --git a/js/src/button.js b/js/src/button.js
index 75b21d94d1..53ae16955c 100644
--- a/js/src/button.js
+++ b/js/src/button.js
@@ -29,7 +29,7 @@ const ClassName = {
const Selector = {
DATA_TOGGLE_CARROT : '[data-toggle^="button"]',
DATA_TOGGLE : '[data-toggle="buttons"]',
- INPUT : 'input',
+ INPUT : 'input:not([type="hidden"])',
ACTIVE : '.active',
BUTTON : '.btn'
}
diff --git a/js/tests/unit/button.js b/js/tests/unit/button.js
index 9576dd256f..724545a532 100644
--- a/js/tests/unit/button.js
+++ b/js/tests/unit/button.js
@@ -139,6 +139,29 @@ $(function () {
assert.ok($btn2.find('input').prop('checked'), 'btn2 is checked')
})
+ QUnit.test('should only toggle selectable inputs', function (assert) {
+ assert.expect(6)
+ var groupHTML = '<div class="btn-group" data-toggle="buttons">' +
+ '<label class="btn btn-primary active">' +
+ '<input type="hidden" name="option1" id="option1-default" value="false">' +
+ '<input type="checkbox" name="option1" id="option1" checked="true"> Option 1' +
+ '</label>' +
+ '</div>'
+ var $group = $(groupHTML).appendTo('#qunit-fixture')
+
+ var $btn = $group.children().eq(0)
+ var $hidden = $btn.find('input#option1-default')
+ var $cb = $btn.find('input#option1')
+
+ assert.ok($btn.hasClass('active'), 'btn has active class')
+ assert.ok($cb.prop('checked'), 'btn is checked')
+ assert.ok(!$hidden.prop('checked'), 'hidden is not checked')
+ $btn.trigger('click')
+ assert.ok(!$btn.hasClass('active'), 'btn does not have active class')
+ assert.ok(!$cb.prop('checked'), 'btn is not checked')
+ assert.ok(!$hidden.prop('checked'), 'hidden is not checked') // should not be changed
+ })
+
QUnit.test('should not add aria-pressed on labels for radio/checkbox inputs in a data-toggle="buttons" group', function (assert) {
assert.expect(2)
var groupHTML = '<div class="btn-group" data-toggle="buttons">' +