【问题标题】:How to count number checkboxes ticked in jquery? [duplicate]如何计算jquery中勾选的数量复选框? [复制]
【发布时间】:2013-06-14 12:31:39
【问题描述】:

我有一个表格,它使用 php while 循环显示表格中的名称列表,每个名称旁边都有一个复选框,以便用户可以选择 2 个名称在下一页上并排显示。

我正在使用 jquery 表单验证器,如果在进入下一页之前选择了多于或少于 2 个名称,我希望它显示一条消息。验证适用于简单的事情,例如直接的字符串比较等,但我无法使用它,我怀疑这是因为我试图获取选中的复选框数量的方式。

这是表格...

 <form method="post" onsubmit="return validation()" action="merge_accounts.php"
       name="merge_form" id="merge_form" >
   <table>
       <?php while ($row = mysqli_fetch_array($sql)){
                $account_id = $row['id']; ?>
            <tr>
                <td><input type="checkbox" id="merge[]" name="merge[]"  value="<? echo $row['id']; ?>" style="margin-left:10px" /></td>
                <td class="results_cell" style="padding-left:0px">
                    <a title="<? $row['name']; ?>" href="account_info.php?id=<? echo $account_id; ?>" onClick="this.document.id.submit();"><? 
                    if(strlen($row['name']) > 45){
                        echo substr($row['name'], 0, 45).'...'; 
                    } else {
                        echo $row['name'];
                    }?></a>
                </td>
            </tr>
            <tr>
                <td colspan="2" class="no_hover">
                  <input type="submit" class="advanced_buttons"
                   style="margin: 0px 5px 3px 10px; height:30px; width:60px" 
                   name="merge_submit" value="Merge" />
               </td>
           </tr>
      </table>
 </form>

jquery...

<script>

    function validation()
    {
        var num = document.forms["merge_form"]["merge"].length;
            if(num != 2)
            {
                $.msgbox("Please select 2 items", {type:"info",
                    buttons: [
                        {type: "submit", value: "OK"}
                    ]
                });
                return false;
            }
    }

</script>

目前表单只是忽略验证功能并提交,无论勾选多少复选框

【问题讨论】:

  • 啊,请java !== javascript
  • @HamZa,评论!==建设性评论
  • @tatty27,实际上,是的,这是一个非常有建设性的评论,如果它让人们明白 Java 和 JavaScript 是两种完全不同且不相关的语言这一事实​​,当你标记这个时你似乎没有理解这一点尽管完全没有任何 Java,但作为 java 的帖子。
  • @HamZa 这是一个意外,我没有意识到我已经做到了,所以指出它被标记为 Java 可能更具建设性,也许那时我会知道你的评论是参考的。
  • @tatty27 我讨厌人们不区分 java 和 javascript。它们是用于不同目的的完全不同的语言。我对此过敏,仅此而已。您可能犯了“错误”,但我见过甚至不知道其中区别的人。您也可以轻松查看编辑日志以了解我所指的内容。

标签: php javascript jquery


【解决方案1】:

要查找选中复选框的数量:

var checked = $('#merge_form input[type=checkbox]:checked').length;

参考资料:

【讨论】:

    【解决方案2】:

    试试看:

    $("#merge_form input:checked").length
    

    【讨论】:

    • 请记住:checked 等同于*:checked(这意味着jQuery/document.querySelectorAll() 正在查看#merge 中的每个 元素以查看它是否是检查与否;docs 明确建议在这种情况下为选择器指定标记名或其他标识符)。
    • @DavidThomas:感谢您的信息。我今天学到了新东西
    • (我应该更清楚一点,但你需要:#merg input:checked,否则你正在寻找#merge 中的:checked 元素,它位于input 中,它将返回没有元素,因为 input 定义为 void/empty 元素。毕竟,jQuery 选择器遵循与 CSS 选择器相同的规则。)
    • 非常感谢您的帮助,效果很好
    猜你喜欢
    • 2016-02-28
    • 2021-02-16
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    相关资源
    最近更新 更多