【问题标题】:Count the number of checked check-boxes and display them on a fixed div using jQuery计算选中复选框的数量并使用 jQuery 在固定 div 上显示它们
【发布时间】:2010-08-19 07:33:51
【问题描述】:

我正在尝试编写一个 jQuery 脚本(我以前从未编写过,我需要帮助)。详情如下;我有一个带有复选框的表格。每个复选框都有不同的 id 和名称,出于我自己的编程原因,我将需要它们。我只想计算复选框的数量,然后简单地将其显示在固定 div 的右侧。 div 只能在第一个复选框被勾选后显示。我怎样才能做到这一点?我的示例复选框是:

<input type="checkbox" name="check_box_no_2" id="check_box_no_2" value="some_important_value"> 

复选框名称是递增的。这意味着下一个将是 check_box_no_3。请帮忙...

到目前为止,我一直在摆弄

$("input[type=checkbox][checked]").each( 
    function() { 
       // Insert code here 
    } 
);

但这似乎不适用于 FireFox。

【问题讨论】:

    标签: jquery checkbox count


    【解决方案1】:

    要选中选中的复选框,您需要:checked psuedo-class。您还需要观察每个复选框,并在其设置更改时更新计数并显示或隐藏 div。这是一种方法:

    $(document).ready(function () {
      $("input[type=checkbox]").each(function () {
        $(this).change(updateCount);
      });
    
      updateCount();
    
      function updateCount () {
        var count = $("input[type=checkbox]:checked").size();
    
        $("#count").text(count);
        $("#status").toggle(count > 0);
      };
    });
    

    #count 是显示计数的元素(可能是段落标签),#status 是您要显示/隐藏的 div。


    完整的 HTML 示例,供参考:

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <title>Test</title>
        <script type="text/javascript" src="jquery.js"></script>
        <script type="text/javascript">
          $(document).ready(function () {
            $("input[type=checkbox]").each(function () {
              $(this).change(updateCount);
            });
    
            updateCount();
    
            function updateCount () {
              var count = $("input[type=checkbox]:checked").size();
    
              $("#count").text(count);
              $("#status").toggle(count > 0);
            };
          });
        </script>
      </head>
      <body>
        <ul>
          <li><input type="checkbox"> One</li>
          <li><input type="checkbox"> Two</li>
          <li><input type="checkbox"> Three</li>
        </ul>
    
        <div id="status">
          <p id="count">0</p>
        </div>
      </body>
    </html>
    

    【讨论】:

    • 它不工作 :( 并且它给出了一个未捕获的类型错误:启动时无法调用 null 的方法 'each' :( 请告诉我如何使这个东西工作。我创建了一个 div 和一个带有id的计数和状态的段落我还应该检查什么?我所有的复选框都在一个表单标签内。我不知道还能做什么......
    • 我已将完整的、可工作的 HTML 添加到示例中,以便您可以与正在使用的 HTML 进行比较。
    • 真的应该在定义之前立即调用updateCount()吗?这将导致在页面加载之前执行更新代码 - OP 只希望在单击第一个复选框时发生更新
    • 调用和定义的顺序并不重要(参见here)。另外,调用 在 ready 处理程序中,所以在 DOM 加载之前不会发生。实际上,将其调用就绪也是一个好主意。考虑使用后退按钮返回页面 - 复选框将由浏览器保存,因此需要更新计数以反映这一点。
    • 我认为不知何故我自己的脚本与你的脚本崩溃了。有没有办法在选中复选框而不是依赖 jQuery 时调用该函数?
    【解决方案2】:

    试试这个:

    var totalChecked        = 0;
    $("input[type=checkbox]:checked").each(function(){
       totalChecked++;
    });                                    
    if(totalChecked > 0){
       $("div.display").css("display,block");
       $("div.display").text(totalChecked);
    }else{
       $("div.display").css("display,none");
    }
    

    【讨论】:

    • div 的 id 是“显示”正确吗?如果是这样,什么都没有出现。这有什么原因吗?
    猜你喜欢
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 2015-02-18
    • 1970-01-01
    • 2018-03-09
    相关资源
    最近更新 更多