我有两个引导按钮组切换。这两个选项都可以关闭,但只有一个可以打开。如果option1打开,则option2应该关闭。如果option2打开,则option1应该关闭。是否有可能做到这一点?

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');
        }

    });

});


这不能正常工作。

编辑1

答案在引导程序4 DEMO上视觉上不起作用

最佳答案

您可以选择被单击元素的同级元素,并找到值为inputoff并使用jquery设置其checked值。它也可以用于2个以上的组DEMO



$(".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)
  }
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<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>

09-25 17:57