2012-04-27 109 views

回答

2

沒有看到你的HTML,我假設一個簡單的例子。下面是一些短期的jQuery做你問什麼:

$('input[type="radio"]').click(function() { 
    $('input.newsletter').attr({ 
     'checked': $(this).val() == 16, 
     'disabled': $(this).val() == 16 
    }); 
});​ 

jsFiddle example

+0

輝煌,+1,因爲它非常通用 – 11684 2012-04-27 15:19:37

+0

非常好...有什麼方法可以修改它,所以如果選擇了17個單選按鈕,它不會取消選中複選框? – 2012-04-27 16:01:17

+0

您可以將checked屬性從上面更改爲「checked」:$(this).val()== 16 || $( 'input.newsletter')。ATTR( '檢查')!=未定義,'。 http://jsfiddle.net/j08691/8J5y9/2/ – j08691 2012-04-27 16:07:07

0
$("input[type=radio][name=<your radio button set name here>]").changed(function() { 
    if ($("input[type=radio][name=<your radio button set name here>]").val() == "16") { 
     $("input[type=checkbox].newsletter").attr('checked', 'checked'); 
     $("input[type=checkbox].newsletter").attr('disabled', 'disabled'); //this is one way to make it not unselectable 
    } 
    else { 
     $("input[type=checkbox].newsletter").removeAttr('disabled'); 
    } 
} 

另一種方法,使之不能成爲未選擇的是2號線的地方在上文(帶有註釋旁邊)的ifstayChecked = true;和到位的$(...).removeAttr('disabled');stayChecked = false; 。然後,讓類似下面的另一個功能:

$("input[type=checkbox].newsletter").changed(function() { 
    if (stayChecked) { 
     $(this).attr('checked', 'checked'); 
    } 
}); 

注意:您應該某處聲明var stayChecked兩種功能外一個共同的水平(即在腳本級別,或者如果他們聲明裏面的父函數裏面,讓我們說,$(document).ready()函數)。