[英]How to uncheck a radio button by clicking on it a second time
我一直在搜索很多主题,但我没有发现任何与我的问题真正对应的内容:
我想要取消选中单选按钮(例如,在已经选中时单击它来取消选中单选按钮)。
我找到了一些使用隐藏单选按钮作为临时比较对象的解决方案,但这不符合我现有的上下文,所以我想在没有其他单选按钮的情况下做同样的事情。
我试着简单地测试并改变“onclick”事件上单选按钮的状态/值,但它还不是很成功...
谢谢,克莱姆。
那不是单选按钮。 如果您尝试使这项工作,您只会混淆您的用户。
如果您想要可以检查然后取消选中的内容,请使用复选框。 单选按钮用于选择一组选项中的一个。
更好的是:
onclick="
var isChecked = $(this).attr('is_che');
if (isChecked) {
$(this).removeAttr('checked');
$(this).removeAttr('is_che');
}
else {
$(this).attr('checked', 'checked');
$(this).attr('is_che', 'true');
}"
我知道这种动作对于单选按钮是非标准的,但是海报要求功能。 以下是我过去使用过的代码。 我发现它不是最优化的(假设有大量的单选按钮),但我还没有花时间进行优化。
// Allow for radio button unchecking
$(function(){
var allRadios = $('input[type=radio]')
var radioChecked;
var setCurrent = function(e) {
var obj = e.target;
radioChecked = $(obj).attr('checked');
}
var setCheck = function(e) {
if (e.type == 'keypress' && e.charCode != 32) {
return false;
}
var obj = e.target;
if (radioChecked) {
$(obj).attr('checked', false);
} else {
$(obj).attr('checked', true);
}
}
$.each(allRadios, function(i, val) {
var label = $('label[for=' + $(this).attr("id") + ']');
$(this).bind('mousedown keydown', function(e){
setCurrent(e);
});
label.bind('mousedown keydown', function(e){
e.target = $('#' + $(this).attr("for"));
setCurrent(e);
});
$(this).bind('click', function(e){
setCheck(e);
});
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.