2014-12-03 109 views
0

在我的页面中有4个单选按钮,包含Y/N。 保留 - Y/N 取得 - Y/N用JQuery检查单选按钮

我要选择“实现了”无自动每当我检查“保留”不可以。我们的业务规则是,如果我们不能保留它,我们无法实现这一目标。所以,如果保留为否,实现必须被迫选择否

它仅适用于第一次选择和检查过没有取得,当用户选择保留

但用户后选择“达到”是的,代码不再工作。即使用户选择“保留”否,它不会选择“已达到”号。

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

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);      

    } 
}); 

其实,在现实页面会有一系列的每一行线和单选按钮。但为了简单起见,我只在我的示例中加入了单行。

回答

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

+0

谢谢你的答案... btw,你的演示程序不工作。 – TTCG 2014-12-03 12:44:26

+0

哦,我很抱歉,我错误地添加了另一个链接。请检查更新的一个。谢谢! – 2014-12-03 13:05:53

0

你可能也想,如果要强制用户选择 'N'

$(":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); 
    } 
}); 

这将检查AchievedNo无线电禁用 'Y' 复选框以及当RetainedNo被选中时禁用AchievedYes无线电。它也将重新启用AchievedYes,如果用户改变主意并选择RetainedYes