我的页面中有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);
}
});
实际上,在实际页面中,每行都会有一系列行和单选按钮。但为简单起见,我只是在我的例子中加上单行。
答案 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