Jquery检查是否选中了单选按钮

时间:2013-09-25 14:51:49

标签: javascript jquery

我试图取消选中一个单选按钮,如果选中它,同样检查一个单选按钮是否未选中。但是,它总是说它不会被检查。

这是我的代码:

$('input[type=radio]').on('click', function() {
    if ($(this).attr('checked') == 'checked') {
        $(this).attr('checked', false);
    } else {
        $(this).attr('checked', true);
    }
});

上面的代码总是命中if的第一部分。我也试过了

$(this).is(':checked') 

$(this).val() 

$(this).attr('checked') == true

但似乎没有任何效果。

我怎样才能让它发挥作用?

4 个答案:

答案 0 :(得分:1)

以下fiddle希望此myt帮助:

<input type="radio" name="" value="1000" align="middle" id="private_contest">1000 is the value<br>

<input type="radio" name="" value="2000" align="middle" id="private_contest">2000 is the value

和相关的jquery是:

$('input[type=radio]').on('click', function () {

                $(this).siblings().prop('checked', true);
                $(this).prop('checked', false);

        });

答案 1 :(得分:0)

您需要删除已选中的属性以取消选中,并添加该属性以检查单选按钮。不要为其赋值:

<input type="radio" name="radio1">
<input type="radio" name="radio1" checked>

使用:

$(this).addAttr("checked") 
$(this).removeAttr("checked")

答案 2 :(得分:0)

这应该永远不会失败,但这是一种不同的方法。 定位父母,并返回检查哪个无线电,而不是查看所有无线电。 只是一个想法

var myRadio;
$('#radioParent input:radio').click(function() {
    myRadio = $(this).attr('id');
    //console.log(myRadio);
    //return myRadio;
});

答案 3 :(得分:0)

我不确定为什么会收到负面投票。单选按钮的使用使您可以选择0或1个选项,如果需要选择0或多个选项,则会显示复选框列表。但是,如果要撤消可选问题的单选按钮选择,该怎么办?

我通过在名为&#34;数据检查&#34;的单选按钮上创建另一个属性来解决这个问题。

以下是实施:

$('input[type=radio]').on('click', function() {
    var radioButton = $(this);
    var radioButtonIsChecked = radioButton.attr('data-checked') == 'true';

    // set 'checked' to the opposite of what it is
    setCheckedProperty(radioButton, !radioButtonIsChecked);

    // you will have to define your own getSiblingsAnswers function
    //  as they relate to your application
    //  but it will be something similar to radioButton.siblings()
    var siblingAnswers = getSiblingAnswers(radioButton);

    uncheckSiblingAnswers(siblingAnswers);
});

function uncheckSiblingAnswers(siblingAnswers) {
    siblingAnswers.each(function() {
        setCheckedProperty($(this), false);
    });
}

function setCheckedProperty(radioButton, checked) {
    radioButton.prop('checked', checked);
    radioButton.attr('data-checked', checked);
}

在页面加载时,将data-checked属性设置为true或false,具体取决于它是否已被选中。

$(document).ready(function() {
    $('input[type=radio]').each(function () {
        var radioButton = $(this);
        var radioButtonIsChecked = radioButton.attr('checked') == 'checked';

        setCheckedProperty(radioButton, radioButtonIsChecked);
     });
 });