【问题标题】:jQuery see if any or no checkboxes are selectedjQuery查看是否选中了任何复选框
【发布时间】:2011-05-04 11:18:09
【问题描述】:

我知道如何查看单个复选框是否被选中。

但我遇到以下问题 - 给定一个表单 ID,我需要查看是否选中了 任何 个复选框(即 1 个或多个),并且我需要查看是否 none 被选中。基本上我需要两个单独的函数来回答这两个问题。帮助将不胜感激。谢谢!

实际上,我只需要一个函数来告诉我是否选择了 none。知道这一点将回答另一个问题。

【问题讨论】:

标签: javascript jquery forms


【解决方案1】:

你可以使用这样的东西

if ($("#formID input:checkbox:checked").length > 0)
{
    // any one is checked
}
else
{
   // none is checked
}

【讨论】:

【解决方案2】:

JQuery .is 将测试所有指定的元素,如果其中至少一个匹配选择器,则返回 true:

if ($(":checkbox[name='choices']", form).is(":checked"))
{
    // one or more checked
}
else
{
    // nothing checked
}

【讨论】:

  • 虽然is() 似乎可行,但@rahul 的答案中直接在选择器中使用:checked 似乎更合适。 is() 在“内部回调”时似乎更有用,请参阅api.jquery.com/is。还是我错过了什么?
  • 不,这几乎是文档中所写的内容 - 您检查元素是否匹配指定的属性。将其应用为过滤器,然后检查结果中是否至少有一项是相同的,但 imo 更长且不那么富有表现力。
  • +1 表示您的解决方案中的 .is(":checked") 更具表现力,但不确定其余部分。
  • $("form input[type=checkbox]").is(":checked") 可能是一种更简单、更通用的方法。
  • @AdrienBe 使用is 可能性能更好,因为它一找到就停止。
【解决方案3】:

你可以这样做:

  if ($('#form_id :checkbox:checked').length > 0){
    // one or more checkboxes are checked
  }
  else{
   // no checkboxes are checked
  }

地点:

  • :checkbox 过滤器选择器选中所有复选框。
  • :checked 将选中选中的复选框
  • length 会给出检查的数量

【讨论】:

【解决方案4】:

不使用“长度”,您可以这样做:

if ($('input[type=checkbox]').is(":checked")) {
      //any one is checked
}
else {
//none is checked
}

【讨论】:

    【解决方案5】:

    这是我用来检查复选框列表中的任何复选框是否已更改的内容:

    $('input[type="checkbox"]').change(function(){ 
    
            var itemName = $('select option:selected').text();  
    
             //Do something.
    
    });     
    

    【讨论】:

      【解决方案6】:

      Rahul 的回答最适合您的问题。无论如何,如果您要检查一组复选框,而不是表单中的所有复选框,您可以选择它。

      为您要检查的所有复选框设置一个类名,例如,一个类名test_check,现在您可以通过以下方式检查是否选中了属于该组的任何复选框:

      $("#formID .test_check:checked").length > 0
      

      如果它返回true,假设选中了一个或多个类名为test_check 的复选框,如果返回false,则没有选中。

      希望它可以帮助某人。谢谢:)-

      【讨论】:

      • 这是一个简单而紧凑的。谢谢
      【解决方案7】:

      您可以在这里简单地返回.length

      function areAnyChecked(formID) {
        return !!$('#'+formID+' input[type=checkbox]:checked').length;
      }
      

      这会查找给定表单中的复选框,查看是否有:checked,如果是则返回true(否则长度将为0)。为了更清楚一点,这里是非布尔转换版本:

      function howManyAreChecked(formID) {
        return $('#'+formID+' input[type=checkbox]:checked').length;
      }
      

      这将返回检查的数量。

      【讨论】:

        【解决方案8】:

        这是解决这个问题的最好方法。

          if($("#checkbox").is(":checked")){
        
          // Do something here /////
        
          };
        

        【讨论】:

        • 嗨,欢迎来到 StackOverflow。也许您可以多描述一下您的答案,因为不清楚为什么它是解决问题的“最佳方式”。
        猜你喜欢
        • 1970-01-01
        • 2016-03-04
        • 1970-01-01
        • 1970-01-01
        • 2012-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-28
        相关资源
        最近更新 更多