现在使用openshery复选框制作播放列表, 并且已经像单选按钮一样,
但它无法切换回来。
如何让Switchery回到空闲状态/未经检查状态?
这是我的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:它已经检查过,但只有转换卡住了。
已经在这里浏览了一些有关切换的话题,但仍然是错误的。
答案 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();
}
}