作为单选按钮切换,无法切换回来

时间:2016-11-14 04:29:45

标签: javascript jquery checkbox toggle switchery

现在使用openshery复选框制作播放列表, 并且已经像单选按钮一样,

但它无法切换回来。

如何让Switchery回到空闲状态/未经检查状态?

>>> my Fiddle Demo <<<

这是我的js:

$(document).ready(function() {
       //switchery
       var elems = Array.prototype.slice.call(document.querySelectorAll('.js-switch'));

       elems.forEach(function(html) {
          var switchery = new Switchery(html,{size: 'small',});
       });

       //detect change 
       $('input.pinmusic').on('change', function() { //detect change 
          // auto uncheck when selecting other checkbox
          // but this is not working with switchery
          $('.pinmusic').not(this).prop('checked', false);  
       });
});
PS:它已经检查过,但只有转换卡住了。 已经在这里浏览了一些有关切换的话题,但仍然是错误的。

2 个答案:

答案 0 :(得分:0)

确定你的问题非常困难,但如果我理解得很好,你想取消选中一个单选按钮。

嗯,你不能。单选按钮不会被取消选中。单选按钮池的含义是“选择以下选项之一”。取消选中单选按钮意味着用户选择零选项,这是不允许的。

来自维基百科的Radio button

  

单选按钮或选项按钮是一个图形控制元素,允许用户只选择一组预定义的选项。

     

最初可能没有选择组中的任何单选按钮。通过与单选按钮小部件交互,无法恢复此未选择状态,但可以通过其他用户界面元素进行恢复。

如果您希望能够选择零选项,则需要使用的是Checkbox

答案 1 :(得分:0)

我来晚了,但是,这是我的解决方法:

 var $switches = [];
 var elems = Array.prototype.slice.call();

 $.each(document.querySelectorAll('.js-switch'),function(i,html) {
     $switches[html.name] = new Switchery(html,{size: 'small',});
 });
 $('input.js-switch').on('change', function () { 
     if (this.checked) {
       $.each(document.querySelectorAll('input.js-switch:not([name="' + this.name + '"])'), 
       function (i, e) {
          switcherySetChecked($switchers[e.name], false)
       });
     }
 });
 function switcherySetChecked(switcher, check) {
     var curr = $(switcher.element).prop('checked');
     var disabled = $(switcher.element).prop('disabled');
     if (disabled) {
           switcher.enable();
     }
     if (check) {
            if (curr) {
                $(switcher.element).prop('checked',false);
            }
            $(switcher.element).trigger('click');
     } else {
            if (!curr) {
                $(switcher.element).prop('checked', true);
            }
            $(switcher.element).trigger('click');
     }
     if (disabled) {
            switcher.disable();
     }
 }