2014-12-03 108 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