可能重複:
Count the number of checkboxes selected without reloading the page?限制數允許進行檢查
我有,詢問他們希望哪種類型的通的用戶的訂單(1-3天),並給他們選擇他們想要通過的日子的選項。
目前,當他們選擇3天時,我的jQuery爲他們選擇所有3個複選框,並且在他們選擇1或2天時取消選擇。但是,我想要做的是:
當他們選擇2天通過時,它只允許他們檢查最多2個框。當他們選擇1天通行證時,只允許他們檢查1個通行證。
我對我的validateDays()
函數中需要執行的操作提出了一個空白 - 執行此驗證的最佳方式或者是否實際上是最佳路徑。
我認爲使用的每種方法都需要複選框具有相同的名稱/ ID - 但由於表單的其他部分(省略),他們不幸的是不能。
任何想法/指針?
頭部分的JavaScript:
<script type="text/javascript">
function validateDays() {
$('#matthewpeckham').find('input[type="checkbox"]').click(function() {
var pass = parseInt($('input[name="other_1"]:checked').val(), 10) //1,2,3
var days = $('#matthewpeckham').find('input[type="checkbox"]:checked').length;
console.log(days, pass);
if (days == pass) {
$('#matthewpeckham').find('input[type="checkbox"]').not(':checked').prop('disabled', true);
}
else {
$('#matthewpeckham').find('input[type="checkbox"]').not(':checked').prop('disabled', false);
}
})
$('input[name="other_1"]').change(function() {
$('#matthewpeckham').find('input[type="checkbox"]').prop({
'checked': false,
'disabled': false
});
if (parseInt($(this).val(), 10) == 3) $('#matthewpeckham').find('input[type="checkbox"]').prop({
'checked': true,
'disabled': false
});
});
}
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" ></script>
<script type="text/javascript">
$(document).ready(function() {
jQuery('#3daypass').click(function() {
jQuery('#other_2 , #other_3 , #other_4').prop('checked', true);
});
jQuery('#2daypass , #1daypass').click(function() {
jQuery('#other_2 , #other_3 , #other_4').prop('checked', false);
});
});
</script>
主體部分HTML:
<input name="other_1" type="radio" value="3daypass" id="3daypass" onClick="validateDays();">
<input name="other_1" type="radio" value="2daypass" id="2daypass" onClick="validateDays();">
<input name="other_1" type="radio" value="1daypass" id="1daypass" onClick="validateDays();">
<input name="other_2" type="checkbox" id="other_2" value="Tues 5 Feb">
<input name="other_3" type="checkbox" id="other_3" value="Wed 6 Feb">
<input name="other_4" type="checkbox" id="other_4" value="Thurs 7 Feb">
這是一個很好的方法 - 物理禁用該框比彈出警報方便得多。如何調整代碼,以便在某些未點擊的情況下重新啓用最後一個框? – mpdc
這個你喜歡的這種情況? http://jsfiddle.net/j08691/GH6xJ/3/ – j08691
完美。但是,我將複選框限制爲僅在表單的這一部分('#matthewpeckham')中找到的複選框,並且由於某種原因,第一次單擊複選框時驗證不起作用 - 只有後續時間。我添加了太多'.find's? – mpdc