【问题标题】:Bootstrap btn-group-toggle change another group based on valueBootstrap btn-group-toggle 根据值更改另一个组
【发布时间】:2018-01-26 11:15:47
【问题描述】:

我有两个引导按钮组切换。两个选项都可以关闭,但只有一个选项可以打开。如果选项 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');  
        }
        
    });

});    

这不能正常工作。

编辑1

答案在 bootstrap 4 DEMO 上无法直观显示

【问题讨论】:

    标签: javascript jquery twitter-bootstrap


    【解决方案1】:

    您可以选择单击元素的兄弟姐妹并找到值为offinput,并使用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>

    【讨论】:

    • 效果很好,但如果您将 bootstrap4 放在上面,则效果不佳。查看演示:jsfiddle.net/p8q3hpao/2
    • 在这种情况下,您还需要在标签上切换active 类,例如jsfiddle.net/p8q3hpao/6
    • 谢谢!如果我想将每个按钮组包装在一个 div 中,我应该在兄弟 () 中包含什么? jsfiddle.net/hb428bo9/1
    • 完美!谢谢!
    猜你喜欢
    • 2017-05-25
    • 2012-08-30
    • 1970-01-01
    • 2017-02-22
    • 2020-03-05
    • 1970-01-01
    • 2011-04-20
    • 2020-07-28
    • 1970-01-01
    相关资源
    最近更新 更多