Javascript 第二次单击时清除/取消选择单选按钮

Javascript 第二次单击时清除/取消选择单选按钮,javascript,jquery,html,radio-button,Javascript,Jquery,Html,Radio Button,我正在创建的表单上有很多单选按钮 我之所以使用单选按钮而不是复选框,是因为我只想让用户选择一个或不选择一个 但单选按钮的缺点是,一旦选中,它就无法撤消。我正在尝试添加一个功能,即在第二次单击时清除一组广播框 如果我有一组单选按钮,我现在实现的方法可以工作,但如果我想为页面上的所有单选按钮组实现它,则无法工作 当我使用多个单选按钮组时,当我尝试选择其他选项时,它将随机取消选择一个单选按钮 如果有人能帮助我,我将不胜感激 (作品) 如果您改为使用此代码,并以单个名称为目标,则此代码会起作用 (不起作

我正在创建的表单上有很多单选按钮

我之所以使用单选按钮而不是复选框,是因为我只想让用户选择一个或不选择一个

但单选按钮的缺点是,一旦选中,它就无法撤消。我正在尝试添加一个功能,即在第二次单击时清除一组广播框

如果我有一组单选按钮,我现在实现的方法可以工作,但如果我想为页面上的所有单选按钮组实现它,则无法工作

当我使用多个单选按钮组时,当我尝试选择其他选项时,它将随机取消选择一个单选按钮

如果有人能帮助我,我将不胜感激

(作品)

如果您改为使用此代码,并以单个名称为目标,则此代码会起作用

(不起作用)

我试图一次瞄准我所有的单选按钮组,因为有很多


尝试更改行以在选择器表达式中使用单击的单选项的name属性

$radio.siblings('input[name='+ $(this).attr('name') +']').data('waschecked', false);
您只需清除同一组其他收音机上的“waschecked”标志

如果您确实需要使用onchange瞄准目标:


尝试更改行以在选择器表达式中使用单击的单选项的name属性

$radio.siblings('input[name='+ $(this).attr('name') +']').data('waschecked', false);
您只需清除同一组其他收音机上的“waschecked”标志

如果您确实需要使用onchange瞄准目标:


如果您使用的是简单的主从关系,请尝试以下方法:

$('input[type="radio"][name="main_radios"]').on('change', function(){

    $('input[type="radio"][name="secondary_radios"]').prop('checked', false);
    $('input[type="radio"][name="third_radios"]').prop('checked', false);
    $('input[type="radio"][name="fourth_radios"]').prop('checked', false);

    // combine it all into one call if you really feel like it
    $('input[type="radio"][name="secondary_radios"], input[type="radio"][name="third_radios"], input[type="radio"][name="fourth_radios"]').prop('checked', false);

});
取消选中所有不是“此”名称的收音机


如果您使用的是简单的主从关系,请尝试以下方法:

$('input[type="radio"][name="main_radios"]').on('change', function(){

    $('input[type="radio"][name="secondary_radios"]').prop('checked', false);
    $('input[type="radio"][name="third_radios"]').prop('checked', false);
    $('input[type="radio"][name="fourth_radios"]').prop('checked', false);

    // combine it all into one call if you really feel like it
    $('input[type="radio"][name="secondary_radios"], input[type="radio"][name="third_radios"], input[type="radio"][name="fourth_radios"]').prop('checked', false);

});
取消选中所有不是“此”名称的收音机


因此,您只需要通过
name
组可靠地检查/取消检查

像这样的方法应该会奏效:

$('input[type="radio"]').on('click change', function () {//on click/change    
    $(this).prop('checked')//if checked
    ? $(this).prop('checked',false).data('waschecked', false)//uncheck
    : $(this).prop('checked',true).data('waschecked', true)//else check
    .siblings('input[name="'+$(this).prop('name')+'"]').data('waschecked', false);//make siblings false
});
保留
.data('waschecked',…)
以防需要该值,但如果没有该值,它会像这样工作:

$('input[type="radio"]').on('click change', function () {//on click/change    
    $(this).prop('checked')//if checked
    ? $(this).prop('checked',false)//uncheck
    : $(this).prop('checked',true);//else check
});

做了一个小动作:

所以你只需要通过
name
组来可靠地检查/取消检查

像这样的方法应该会奏效:

$('input[type="radio"]').on('click change', function () {//on click/change    
    $(this).prop('checked')//if checked
    ? $(this).prop('checked',false).data('waschecked', false)//uncheck
    : $(this).prop('checked',true).data('waschecked', true)//else check
    .siblings('input[name="'+$(this).prop('name')+'"]').data('waschecked', false);//make siblings false
});
保留
.data('waschecked',…)
以防需要该值,但如果没有该值,它会像这样工作:

$('input[type="radio"]').on('click change', function () {//on click/change    
    $(this).prop('checked')//if checked
    ? $(this).prop('checked',false)//uncheck
    : $(this).prop('checked',true);//else check
});

摆弄:

如果希望用户能够选择一个或不选择,请使用复选框。选中一个复选框时禁用其他复选框,取消选中时启用它们。如果它们选择2@t编辑当收听单选按钮时,您需要收听
更改
事件,因为
单击
在整个web浏览器范围内最多是不一致的。如果希望用户能够选择一个或无,请使用复选框。选中一个复选框时禁用其他复选框,取消选中时启用它们。如果它们选择2@t当您收听单选按钮时,您需要收听
更改
事件,因为
单击
在整个web浏览器范围内最多是不一致的。假设我有100组不同的单选按钮。我不确定是否要为每100个按钮创建一个新功能。假设我有100组不同的单选按钮。我不确定是否要为每100个按钮创建一个新函数。嘿,Jammy,这在JSFIDLE中非常有效。但由于某些原因,我的网站上的工作并不火爆。不知道为什么。这可能与我使用自定义图像作为我选择的单选按钮有关。我得去看看。谢谢你的帮助。嘿,杰米,这在JSFIDLE中非常有效。但由于某些原因,我的网站上的工作并不火爆。不知道为什么。这可能与我使用自定义图像作为我选择的单选按钮有关。我得去看看。谢谢你的帮助。这个很好用!非常感谢。这应该在大多数浏览器上使用吗?确实应该。如果你发现了一个不起作用的,那就告诉我,我会弄清楚的。这个效果非常好!非常感谢。这应该在大多数浏览器上使用吗?确实应该。如果你发现了一个不起作用的,那就告诉我,我会解决的。