Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选中所有复选框_Javascript_Jquery - Fatal编程技术网

Javascript 选中所有复选框

Javascript 选中所有复选框,javascript,jquery,Javascript,Jquery,我想知道如何使用jQuery查看是否选中了所有复选框 基本上,当所有三个选项都选中时,我只想显示手机号码 如果仅选择了最后一个选项,则显示起始编号 如果选择了所有三个选项,则显示“移动”并隐藏“主页” 我成功地得到了这样一种情况:如果用户单击最后一个选项,则会显示家庭号码,但如果三个选项都被选中,则不会显示家庭号码 请参阅下面我的jQuery 猜测您的html,请尝试以下操作: $('form input:checkbox').on('click', function(){ if ($('

我想知道如何使用jQuery查看是否选中了所有复选框

基本上,当所有三个选项都选中时,我只想显示手机号码

如果仅选择了最后一个选项,则显示起始编号

如果选择了所有三个选项,则显示“移动”并隐藏“主页”

我成功地得到了这样一种情况:如果用户单击最后一个选项,则会显示家庭号码,但如果三个选项都被选中,则不会显示家庭号码

请参阅下面我的jQuery


猜测您的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.children().prop('checked',!$(this.children().prop('checked')) “this”是li,li的子项是标签,而不是输入。因此您需要将其修改为:

    $(this).find('input').prop( 'checked', !$(this).find('input').prop('checked') );
    
  • 如果($(“表单输入:复选框:选中”)。长度==3){
  • input:checkbox元素不在表单中,因此需要删除表单,如下所示:

    $('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.children().prop('checked',!$(this.children().prop('checked'))
  • “this”是li,li的子项是标签,而不是输入。因此您需要将其修改为:

    $(this).find('input').prop( 'checked', !$(this).find('input').prop('checked') );
    
  • 如果($(“表单输入:复选框:选中”)。长度==3){
  • input:checkbox元素不在表单中,因此需要删除表单,如下所示:

    $('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)时,它仍然显示“手机号码”。这是正确的行为吗?