Bootstrap btn-group-toggle根据值更改另一个组

时间:2018-01-26 11:15:48

标签: javascript jquery twitter-bootstrap

我有两个bootstrap按钮组切换。两个选项都可以关闭,但只有一个可以打开。如果选项1打开,则选项2应该关闭。如果选项2打开,则选项1应该关闭。有可能这样做吗?

HTML:

<div class="btn-group btn-group-toggle" data-toggle="buttons" id="option1">
    <label class="btn btn-secondary" id="option1_on">
        <input type="radio" name="options_option1" value="on"> On
    </label>
    <label class="btn btn-secondary" id="option1_off">
        <input type="radio" name="options_option1" value="off"> Off
    </label>
</div>


<div class="btn-group btn-group-toggle" data-toggle="buttons" id="option2">
    <label class="btn btn-secondary" id="option2_on">
        <input type="radio" name="options_option2" value="on"> On
    </label>
    <label class="btn btn-secondary" id="option2_off">
        <input type="radio" name="options_option2" value="off"> Off
    </label>
</div>

这是我尝试使用javascript:

$(function() {

    $("#option1 input:radio").change(function() {
        var optionValue = $(this).val();
        if (optionValue == 'on'){
            //Option2 must be off
            $("#option2_off").button('toggle');  
        }

    });

    $("#option2 input:radio").change(function() {
        var optionValue = $(this).val();
        if (optionValue == 'on'){
            //Option1 must be off
            $("#option1_on").button('dispose');  
        }

    });

});    

这不能正常工作。

EDIT1

答案在bootstrap 4 DEMO

上无法正常工作

1 个答案:

答案 0 :(得分:2)

您可以选择已点击元素的兄弟元素并查找值为input的{​​{1}},并使用jquery设置其off值。它也适用于超过2组DEMO

checked
$(".btn-group-toggle input:radio").on('change', function() {
  let val = $(this).val();
  if (val == 'on') {
    var sibling = $(this)
      .parents('.btn-group-toggle')
      .siblings()
      .find('input[value="off"]')
      .prop('checked', true)
  }
})