Javascript 选中所有复选框
我想知道如何使用jQuery查看是否选中了所有复选框 基本上,当所有三个选项都选中时,我只想显示手机号码 如果仅选择了最后一个选项,则显示起始编号 如果选择了所有三个选项,则显示“移动”并隐藏“主页” 我成功地得到了这样一种情况:如果用户单击最后一个选项,则会显示家庭号码,但如果三个选项都被选中,则不会显示家庭号码 请参阅下面我的jQueryJavascript 选中所有复选框,javascript,jquery,Javascript,Jquery,我想知道如何使用jQuery查看是否选中了所有复选框 基本上,当所有三个选项都选中时,我只想显示手机号码 如果仅选择了最后一个选项,则显示起始编号 如果选择了所有三个选项,则显示“移动”并隐藏“主页” 我成功地得到了这样一种情况:如果用户单击最后一个选项,则会显示家庭号码,但如果三个选项都被选中,则不会显示家庭号码 请参阅下面我的jQuery 猜测您的html,请尝试以下操作: $('form input:checkbox').on('click', function(){ if ($('
猜测您的html,请尝试以下操作:
$('form input:checkbox').on('click', function(){
if ($('form input:checkbox').length == $('form input:checkbox:checked').length) {
console.log('All checkboxes are checked');
}
});
if ($("input:checkbox:checked").length === 3)
编辑:
哦,我明白了,问题是你的选择器表单输入:checkbox:checked
由于你的复选框不在表单标签内,你有两种可能的解决方案:将
更改为html中的第一行或从选择器中删除“表单”一词
此外,您还必须对任何复选框(而不仅仅是最后一个复选框)进行句柄处理,以便在单击任何复选框时可以验证条件。猜测您的html尝试以下操作:
$('form input:checkbox').on('click', function(){
if ($('form input:checkbox').length == $('form input:checkbox:checked').length) {
console.log('All checkboxes are checked');
}
});
if ($("input:checkbox:checked").length === 3)
编辑:
哦,我明白了,问题是你的选择器表单输入:checkbox:checked
由于你的复选框不在表单标签内,你有两种可能的解决方案:将
更改为html中的第一行或从选择器中删除“表单”一词
此外,您还必须为任何复选框(而不仅仅是最后一个复选框)执行句柄,以便在单击任何复选框时可以验证条件。尝试:
if($( "input:checked" ).length === 3) {
//show mobile number hide home
}
尝试:
您有两个错误:
$(this).find('input').prop( 'checked', !$(this).find('input').prop('checked') );
$('form input:checkbox').on('click', function(){
if ($('form input:checkbox').length == $('form input:checkbox:checked').length) {
console.log('All checkboxes are checked');
}
});
if ($("input:checkbox:checked").length === 3)
祝你好运!你有两个错误:
$(this).find('input').prop( 'checked', !$(this).find('input').prop('checked') );
$('form input:checkbox').on('click', function(){
if ($('form input:checkbox').length == $('form input:checkbox:checked').length) {
console.log('All checkboxes are checked');
}
});
if ($("input:checkbox:checked").length === 3)
祝你好运!你必须这样做:
$("li.checkbox").on('click', function (e) {
e.preventDefault();
//If all three are selected show mobile, hide home
if ($("ul li.checkbox.active").length > 1) {
mobileNumber.css('display', 'block');
homeNumber.hide();
} else if ($("li.last-option").hasClass("active")) {
//If select last option only show home
homeNumber.toggleClass('home-active');
homeNumber.show();
mobileNumber.hide();
//If select last option only hide mobile
mobileNumber.toggleClass('mobile-inactive');
}
});
演示:
您必须这样做:
$("li.checkbox").on('click', function (e) {
e.preventDefault();
//If all three are selected show mobile, hide home
if ($("ul li.checkbox.active").length > 1) {
mobileNumber.css('display', 'block');
homeNumber.hide();
} else if ($("li.last-option").hasClass("active")) {
//If select last option only show home
homeNumber.toggleClass('home-active');
homeNumber.show();
mobileNumber.hide();
//If select last option only hide mobile
mobileNumber.toggleClass('mobile-inactive');
}
});
演示:
我的问题中有一个包含HTML等内容的JSFIDLE。我将尝试你发布的内容,谢谢。我的问题中有一个包含HTML等内容的JSFIDLE。我将尝试你发布的内容,谢谢。有点困惑,因为你实际上没有让复选框保持选中状态……这种方法非常奇怪,你为什么试图绕过事件在复选框本身上?这会使您自己更加困难。
将传递事件,尽管您隐藏了实际的复选框,但在关于应该显示什么的语句中也存在冲突,2基于所有选择的2个错误的变体,输入元素不是li的子元素,li的子元素是label,label的子元素是input:checkbox,所以他应该使用jquery find方法,而不是children方法。这有点让人困惑,因为你实际上没有让复选框保持选中状态……这种方法非常奇怪,为什么你要试图绕过复选框本身的事件?这让你自己更加困难。
会传递事件,尽管你隐藏了实际的ch因此,关于应该显示什么的语句中存在冲突,基于所有已选择的2个错误的2个变体,输入元素不是li的子元素,li的子元素是label,label的子元素是input:复选框,因此他应该使用jquery find方法,而不是children方法。但是,当您选择最后一个选项进行操作时,这很有效我选择了,然后取消选择。手机号码应该显示在屏幕上,而不是家里。你能帮忙吗?太棒了!更新你的答案中的代码和小提琴,我会把它标记为正确的。再次感谢!这是因为preventDefault()
让我更正一下well@Filth当选择选项1和3(但不是2)时,仍会显示“手机号码”。这是正确的行为吗?但是,当您选择最后一个激活选项,然后取消选择它时,这会很好地工作。手机号码应该显示而不是家庭。您能帮忙吗?太棒了!更新您的代码和您的答案中的小提琴,我会将其标记为正确。再次感谢!这是因为preventDefault()
让我更正一下well@Filth当选择选项1和3(而不是2)时,它仍然显示“手机号码”。这是正确的行为吗?