Bootstrap从不确定状态切换

时间:2018-01-11 14:30:45

标签: switch-statement state angularjs-bootstrap

从这个小提琴开始:

https://jsfiddle.net/okuem1fb/

<div class="make-switch switch-small">
  <input type="checkbox" checked="true" data-checkbox="VALUE1" class="alert-status">
</div>
<div class="make-switch switch-small">
  <input type="checkbox" checked="true" data-checkbox="VALUE2" class="alert-status pt2">
</div>
<div class="make-switch switch-small">
  <input type="checkbox" checked="true" data-checkbox="VALUE3" class="alert-status">
</div>
<div class="make-switch switch-small">
  <input type="checkbox" checked="true" data-checkbox="VALUE4" class="alert-status">
</div>

$('.alert-status').bootstrapSwitch('state', true);
$(".alert-status pt2").attr('data-indeterminate', 'true');
$('.alert-status').on('switchChange.bootstrapSwitch', function (event, state) {
   alert($(this).data('checkbox'));
});

从不确定状态开始,按钮会根据您点击的哪一方做出反应: 点击&#39;开启&#39;然后开关转到“关闭”状态。 点击&#39;关闭&#39;然后开关转到“开”状态。

我想改变这一点,当我点击&#39; On&#39;我实际上希望它能够进入“现状”状态。对于&#39;关闭&#39; ...

反之亦然

点击&#39;关闭&#39;从不确定的状态来看,使用的事件不会触发...

有关如何改变这一点的想法吗?

1 个答案:

答案 0 :(得分:0)

我希望从那时起找到解决方案。...

对于那些处于相同情况的人,这里是解决方案。 有必要修改js文件(bootstrap-switch.js)并找到对应于:

的行。
key: '_handleHandlers',
  value: function _handleHandlers() {
    var _this6 = this;

    this.$on.on('click.bootstrapSwitch', function (event) {
      event.preventDefault();
      event.stopPropagation();
      _this6.state(true); //--> _this6.state(false);
      return _this6.$element.trigger('focus.bootstrapSwitch');
    });
    return this.$off.on('click.bootstrapSwitch', function (event) {
      event.preventDefault();
      event.stopPropagation();
      _this6.state(false); //--> _this6.state(true);
      return _this6.$element.trigger('focus.bootstrapSwitch');
    });
  }

这将修改开关,使其在您单击“开”时变为“开”,而在另一侧单击时变为“关”。您可以用相同的方式修改缩小的文件(只是必须找到要修改的特定位置)...

对于更改事件,初始化后,必须将开关状态设置为null:

$("#my-switch").bootstrapSwitch({
    indeterminate: true,
    state: null
});

在Github上对此进行了讨论:https://github.com/Bttstrp/bootstrap-switch/issues/426(以及相应的JSFiddle:http://jsfiddle.net/2m4b4bb2/3/