$("#time-slot input[type='checkbox']").click(function() {
// Disable all unchecked
$('input[type=checkbox]:not(:checked)').attr('disabled','disabled');
// If 3 are checked we are done
if($('input[type=checkbox]:checked').length == 3)
return;
// If the checkbox either side of this one is checked, we only have 1 option
if($(this).prev().is(':checked') && $(this).next().is(':checked')){
$(this).removeAttr('disabled');
return;
}
// Enable the checkboxes before and after the current selection
$('input[type=checkbox]:checked').prev().removeAttr('disabled');
$('input[type=checkbox]:checked').next().removeAttr('disabled');
// If none are checked, enable all
if($('input[type=checkbox]:checked').length == 0)
$('input[type=checkbox]').removeAttr('disabled');
});
這應該涵蓋所有可能性。看到它,行動... http://jsfiddle.net/JcCdD/
UPDATE
這裏的區別是,我們必須使用prevAll和nextAll跳過BR和標籤元素。由於這些工作在使用元素集合時略有不同,我們必須將其分解成每個語句。
$("#time-slot input[type='checkbox']").click(function() {
// Disable all unchecked
$('input[type=checkbox]:not(:checked)').attr('disabled','disabled');
// If 3 are checked we are done
if($('input[type=checkbox]:checked').length == 3)
return;
// If the checkbox either side of this one is checked, we only have 1 option
if($(this).prevAll('input').first().is(':checked') && $(this).nextAll('input').first().is(':checked')){
$(this).removeAttr('disabled');
return;
}
// Enable the checkboxes before and after the current selection
$('input[type=checkbox]:checked').each(function(){
$(this).prevAll('input').first().removeAttr('disabled');
$(this).nextAll('input').first().removeAttr('disabled');
});
// If none are checked, enable all
if($('input[type=checkbox]:checked').length == 0)
$('input[type=checkbox]').removeAttr('disabled');
});
新的例子在這裏... http://jsfiddle.net/bEjTf/
怎麼樣#6,#7,#8#如果6被選中,或者#4,#5,#6#如果6檢查 –