使用JQuery检查单选按钮

时间:2014-12-03 12:21:38

标签: jquery radio-button

我的页面中有4个带Y / N的单选按钮。 保留 - Y / N. 达到 - 是/否

我想选择"已实现"每当我检查"保留"不。我们的业务规则是,如果我们不能保留它,我们就无法实现它。因此,如果保留为否,则必须强制实现选择否。

仅适用于首次选择,并且当用户选择保留编号时检查已达到否。

但在用户选择"已实现"是的,代码不再起作用了。即使用户选择"保留"不,它没有选择"已实现"否

我已将示例代码放在此处。

http://jsfiddle.net/thetwai/k7w56gn4/1/

$(":radio[id*='rdRetainedNo']").change(function () {
    if ($(this).is(":checked")) {
            $(this).parent().parent().find(":radio[id*='rdAchievedNo']").attr('checked', true);                    

    }
});

实际上,在实际页面中,每行都会有一系列行和单选按钮。但为简单起见,我只是在我的例子中加上单行。

2 个答案:

答案 0 :(得分:0)

您必须使用.prop()代替.attr()因为.attr()方法在检索某些属性时有时会考虑属性值,而您可能无法给出正确的结果。

此外,您可以使用.closest('tr')代替.parent().parent(),如下所示

注意 - 您错过<tr>第二行,其中存在以下单选按钮,将其添加到您的HTML中。

$(":radio[id*='rdRetainedNo']").change(function () {
    if ($(this).is(":checked")) {
       $(this).closest('tr').find(":radio[id*='rdAchievedNo']").prop('checked', true);                    
    }
});

<强> DEMO

答案 1 :(得分:0)

你可能还想禁用“&#39; Y&#39;复选框,如果您想强制用户选择&#39; N&#39;

$(":radio[id*='rdRetainedNo']").change(function () {
    if ($(this).is(":checked")) {
        $(this).parent().parent().find(":radio[id*='rdAchievedNo']").attr('checked', true);   
        $(this).parent().parent().find(":radio[id*='rdAchievedYes']").attr('disabled', true);

    }   
});
$(":radio[id*='rdRetainedYes']").change(function () {
    if ($(this).is(":checked")) {
        $(this).parent().parent().find(":radio[id*='rdAchievedYes']").attr('disabled', false);
    }
});

当检查RetainedNo时,这将检查AchievedNo无线电以及禁用AchievedYes无线电。如果用户改变主意并选择RetainedYes

,它还将重新启用AchievedYes