jQuery将选中的复选框存储到数组中

 雷雨点H 发布于 2023-02-06 20:43

背景

我有一个复选框的表格,按名称分组,每个复选框包含一个时间值.HTML的一个例子:











提交表单时,将按照POST我希望的方式输入值; 所有检查的时间都在tuesday[]数组中.

问题

我想用一些客户端验证jQuery.我想检查是否至少选中了一个复选框.

我已经尝试将它存储到var中,如下所示:

var availTuesday  = $("input:checkbox[name='tuesday']:checked");

但是当我这样做时console.log(availTuesday);,没有显示任何内容(无论是否检查某些内容).我也试过了console.log(availTuesday.serialize());

题:

我怎么能检索的用户选定值tuesday[]复选框组,以及为其他日期(wednesday[],thursday[],等)?

谢谢.

1 个回答
  • 选择器不正确,将其更改为:

    var $tuesday = $("input[type=checkbox][name='tuesday[]']:checked");
    

    要获取值,可以使用.map()返回数组的方法:

    if ($tuesday.length) {
       // Getting values of the checked checkboxes
       var values = $tuesday.map(function(){
            return this.value;
       }).get();
       // ...
    } else {
        // There is no checked `day[]` checkbox
    }
    

    如果您有其他类似的复选框,则可以使用数组:

    var days = ['days', 'in', 'a', 'week'],
        values = {},
        errors = [],
        $checkboxes = $("input[type=checkbox]");
    
    $.each(days, function(_, day) {
      var $set = $checkboxes.filter('[name="'+day+'[]"]:checked');
      if ($set.length) {
          values[day] = $set.map(function() {
              return this.value;
          }).get();
      } else {
          // There is no checked `day[]` checkbox
          errors.push(day);
      }
    });
    
    if (errors.length) {
       // console.log('Please check at least one hour in ' + errors.join(', ') + ' days ...');
    } else {
      // console.log(values);
    }
    

    2023-02-06 20:45 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有