可能重复:
在不重新加载页面的情况下计算选中的复选框数量?
我有一个订单表格,询问用户他们想要哪种类型的通行证(1-3 天),并让他们可以选择他们想要通行证的日期。
目前,当他们选择 3 天时,我的 JQuery 会为他们选择所有 3 个复选框,并在他们选择 1 天或 2 天时取消选择。但是,我想做的是:
当他们选择 2 日通行证时,最多只能检查 2 个框。当他们选择 1 天通行证时,它只允许他们选中 1 个框。
我对我的validateDays()
函数需要做什么表示空白 - 运行此验证的最佳方式,或者这是否实际上是最佳途径。
我想到的每种方法都要求复选框具有相同的名称/ID - 但由于表单的其他部分(省略),不幸的是它们不能。
任何想法/指针?
HEAD 部分 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">