使用具有不同名称的 jQuery 到 select/deselect 单选按钮

Using jQuery to select/deselect radio buttons with different names

我有一个测验,它使用数据库中答案的 ID 作为名称,以检查它们是否正确。所以基本上我不能把它们都改成同一个名字。

无论如何,这给我留下了可以全部选中的单选按钮,但它不应该这样工作。我发现 jQuery 允许取消选中单选按钮,但我需要在您单击其他按钮时取消选中它们。

HTML:

<fieldset>
    <input type="radio" name="21">
    <label for="21">Answer 21</label>
    <input type="radio" name="22" class="checked">
    <label for="22">Answer 22</label>
    <input type="radio" name="23" class="">
    <label for="23">Answer 23</label>
    <input type="radio" name="24">
    <label for="24">Answer 24</label>
</fieldset>

脚本:

    $("input[type='radio']").click(function (event) {
    // If the button is selected.
    if ($(this).hasClass("checked")) {
        // Remove the placeholder.
        $(this).removeClass("checked");
        // And remove the selection.
        $(this).removeAttr("checked");
        // If the button is not selected.
    } else {
        // Remove the placeholder from the other buttons.
        $("input[type='radio']").each(function () {
            $(this).removeClass("checked");
        });
        // And add the placeholder to the button.
        $(this).addClass("checked");
    }
});

所以如果 21 被选中并且我单击 22,则 21 应该取消选中

使用单选按钮的值传递id,并给它们取一个相同的名字。

<input type="radio" id="r21" value="21" name="radiobtns">
<label for="r21">21</label>

那你就不需要jQuery.

试试这个代码,除了被点击的以外,所有的单选按钮都将被取消选中。正如 Aron P Johny 所说,如果您想将所有单选按钮与特定问题和答案分组,那么请改用他的答案。

$("input[type='radio']").click(function (event) {       
            $("input[type='radio']").prop('checked',false);
            $(this).prop('checked',true);      
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<fieldset>
    <input type="radio" name="21">
    <label for="21">Answer 21</label>
    <input type="radio" name="22" class="checked">
    <label for="22">Answer 22</label>
    <input type="radio" name="23" class="">
    <label for="23">Answer 23</label>
    <input type="radio" name="24">
    <label for="24">Answer 24</label>
</fieldset>

如果你想让同一个字段集中的无线电组像一个无线电组一样工作,那么你可以简单地做

 $("input[type='radio']").click(function (event) {
     $(this).addClass("checked");    
     $(this).siblings('input[type="radio"]').prop('checked', false).removeClass('checked')
 });

演示:Fiddle

So if 21 is checked and I click 22, 21 should uncheck 如果这是你想要的,你并不需要 jQuery..

<fieldset>
 <input type="radio" name="radio_button">
 <label for="21">Answer 21</label>
 <input type="radio" name="radio_button" class="checked">
 <label for="22">Answer 22</label>
 <input type="radio" name="radio_button" class="">
 <label for="23">Answer 23</label>
 <input type="radio" name="radio_button">
 <label for="24">Answer 24</label>
</fieldset>

只需确保它们都具有相同的名称..