javascript - bootstrap 多选复选框表现得像单选按钮

标签 javascript jquery html twitter-bootstrap

我有一个 Bootstrap 多选,其中包含 7 个复选框项目。 对于其中的 3 个(全部,已解决并打开),我需要它们充当单选按钮: 当我选择 resolved 然后 all 和 open 必须取消选择。 当我选择所有然后解决和打开必须取消选择。 当我选择打开时,所有和解决的问题都必须取消选择。 是否可以在不破坏多个菜单中的多选的情况下实现这一目标?

这是一个 jsfiddle:http://jsfiddle.net/sp3L1yz3/

我尝试使用“onchange”,但逻辑不正确,因为它不知道刚刚单击的项目并运行 each 使选择/取消选择仅从上到下工作:

onChange: function(option, checked) {
var selectedOptions = $('#menu option:selected');
  $('#menu option:selected').each(function() {
    if ($(this).val().indexOf("resolved") > -1) {
      $('#menu').multiselect('deselect', 'all');
      $('#menu').multiselect('deselect', 'open');
      $('#menu').multiselect('select', 'resolved');
    }
    if ($(this).val().indexOf("open") > -1) {
      $('#menu').multiselect('deselect', 'all');
      $('#menu').multiselect('deselect', 'resolved');
      $('#menu').multiselect('select', 'open');
    }
    if ($(this).val().indexOf("all") > -1) {
      $('#menu').multiselect('select', 'all');
      $('#menu').multiselect('deselect', 'resolved');
      $('#menu').multiselect('deselect', 'open');
    }
  });
}

最佳答案

请注意,您的选项应包含在 <optgroup> 中标签,像这样:

<div class="selectdiv">
   <select name="menu[]" id="menu" class="multiselect" multiple="multiple">
      <optgroup label="filter one">
         <option value='all' selected='selected'>all</option>
         <option value='resolved'>resolved</option>
         <option value='open'>open</option>
         <option value='other1'>other1</option>
      </optgroup>
      <optgroup label='filter two'>
          <option value='one'>1</option>
          <option value='ten'>10</option>
      </optgroup>
      <optgroup label='filter three'>
          <option value='three'>three</option>
      </optgroup>
   </select>
</div>

当你有这个结构时,你可以像这样在 onchange 方法中实现你正在寻找的东西:

$('#menu').multiselect({
    maxHeight: 400,
    numberDisplayed: 1,
    onChange: function(option, checked) {
                var values = [];
                var optGroupLabel = $(option).parent().attr('label');
                $('#menu optGroup[label="'+optGroupLabel+'"] option').each(function() {
                   if ($(this).val() !== option.val()) {
                      values.push($(this).val());
                   }
                });
                $('#menu').multiselect('deselect', values);
    }
})

Fiddle here .

关于javascript - bootstrap 多选复选框表现得像单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25256639/

相关文章:

html - CSS 在 div 中定位 div

html - 你如何强制文本换行并保持居中定位?

javascript - Angular 2 EventEmitter 性能

javascript - 使用 Ajax 调用从 NodeJS 向客户端发送数据

javascript - 禁用用户代理样式表

jquery - 需要修改 JQuery Cycle updateActivePagerLink 选项

java - 无法点击按钮

javascript - Facebook Javascript SDK FB 未定义

javascript - jquery ui - 可排序 : get new position of all elements

javascript - Ajax 表单不执行任何操作