【发布时间】:2013-01-15 22:55:34
【问题描述】:
我想使用复选框来模拟单选按钮的行为,这表示:
当一个复选框被选中时,所有其他同名的复选框(这里是选择器)都被取消选中
但是,如果我尝试做类似的事情:
$('body').delegate('.myradio', 'click', function(e) {
$('.myradio').prop('checked', false);
$(this).prop('checked', true);
});
这会触发两次change 事件。
如果我尝试添加 e.preventDefault :
$('body').delegate('.myradio', 'click', function(e) {
$('.myradio').prop('checked', false);
$(this).prop('checked', true);
e.preventDefault();
});
根本没有触发任何事件,也没有选中复选框。
最后,如果我尝试自己触发事件:
$('body').delegate('.myradio', 'click', function(e) {
$('.myradio').prop('checked', false);
$(this).prop('checked', true);
e.preventDefault();
$(this).change();
});
change 事件也被调用了两次。
关于信息,我所有的复选框都有唯一的 ID。
除了选中的复选框之外,禁用所有复选框的正确方法是什么?
【问题讨论】:
-
这可能是一个显而易见的问题,但是如果您希望复选框的行为类似于单选按钮,为什么不直接使用单选按钮?
-
因为该行为取决于其他地方检查的内容:在某些情况下,用户可能能够检查多个复选框。
-
您可以使用超时并忽略触发的事件,例如100 毫秒内两次,但这真的很脏;)
-
不错的主意。 0 毫秒的超时完成了这项工作。 :-)
-
@Ninsuo 那么你应该能够取消选中一个复选框吗?
标签: jquery checkbox radio-button