繁体   English   中英

如何通过再次单击它来取消选中单选按钮

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM