Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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 jQuery将选中的复选框存储到数组中_Javascript_Jquery_Html_Checkbox - Fatal编程技术网

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

Javascript jQuery将选中的复选框存储到数组中,javascript,jquery,html,checkbox,Javascript,Jquery,Html,Checkbox,背景 我有一个由复选框组成的表格网格,按名称分组,每个复选框都包含一个时间值。HTML的一个示例: <td><input type="checkbox" name="tuesday[]" value="10am"></td> <td><input type="checkbox" name="tuesday[]" value="11am"></td> <td><input type="checkbox" na

背景

我有一个由复选框组成的表格网格,按名称分组,每个复选框都包含一个时间值。HTML的一个示例:

<td><input type="checkbox" name="tuesday[]" value="10am"></td>
<td><input type="checkbox" name="tuesday[]" value="11am"></td>
<td><input type="checkbox" name="tuesday[]" value="12pm"></td>
<td><input type="checkbox" name="tuesday[]" value="1pm"></td>
<td><input type="checkbox" name="tuesday[]" value="2pm"></td>
<td><input type="checkbox" name="tuesday[]" value="3pm"></td>
<td><input type="checkbox" name="tuesday[]" value="4pm"></td>
<td><input type="checkbox" name="tuesday[]" value="5pm"></td>
<td><input type="checkbox" name="tuesday[]" value="6pm"></td>
<td><input type="checkbox" name="tuesday[]" value="7pm"></td>
但是当我这样做时,
console.log(availTuesday),不显示任何内容(无论是否选中某些内容)。我还尝试了
console.log(availTuesday.serialize())

问题:

如何检索
星期二[]
复选框组以及其他日期(
星期三[]
星期四[]
等)的用户选中值


谢谢。

选择器不正确,请将其更改为:

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);
}
如果有其他类似的复选框集,则可以使用数组:

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);
}

选择器不正确,请将其更改为:

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);
}
如果有其他类似的复选框集,则可以使用数组:

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);
}

如果需要实际的

var values = $("input[type=checkbox][name='tuesday[]']:checked").map(function() {
    return this.value;
}).get();

如果需要实际的

var values = $("input[type=checkbox][name='tuesday[]']:checked").map(function() {
    return this.value;
}).get();
你可以试试

var availTuesday = [];
    $('input[type=checkbox][name="tuesday[]"]:checked').each(function() {
       availTuesday.push($(this).val()); 
    });
你可以试试

var availTuesday = [];
    $('input[type=checkbox][name="tuesday[]"]:checked').each(function() {
       availTuesday.push($(this).val()); 
    });

如果您真正想要的是选择任何框,则可以执行以下操作:

if($('input[type="checkbox"][name="tuesday[]"]:checked').length) {
    ...
} else {
    ...
}

length
值是jQuery对象(DOM对象的超集)的一个属性,用于指定与选择器匹配的节点数。在这种情况下,如果您选中长度且值为0,则不存在
:选中的
复选框名称为
tuday[]
(即,用户未选中任何复选框,因此显示验证消息)。这是快速而肮脏的验证。如果您希望检索这些值,那么大量其他答案可能会更好。

如果您真正想要的是选择任何框,则可以执行以下操作:

if($('input[type="checkbox"][name="tuesday[]"]:checked').length) {
    ...
} else {
    ...
}

length
值是jQuery对象(DOM对象的超集)的一个属性,用于指定与选择器匹配的节点数。在这种情况下,如果您选中长度且值为0,则不存在
:选中的
复选框名称为
tuday[]
(即,用户未选中任何复选框,因此显示验证消息)。这是快速而肮脏的验证。如果您希望检索这些值,那么大量其他答案可能会更好。

您需要修复选择器以匹配名称,正如其他人所提到的。
如果您只想测试是否选中了一个,可以直接转到布尔值,如下所示:

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

正如其他人所提到的,您需要修复选择器以匹配名称。
如果您只想测试是否选中了一个,可以直接转到布尔值,如下所示:

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

选择器中的名称与复选框的名称不匹配。jQuery不会在外部解析
[]
。支架应包括在选择器中
[name='tuberday[]']
。选择器中的名称与复选框的名称不匹配。jQuery不会在外部解析
[]
。支架应包括在选择器中
[name='beday[]']
。这里有很多很好的答案,所以很难选出最好的答案,但我想我从你的帖子中学到了最多,所以谢谢你。:)这里有很多很棒的答案,所以很难选出最好的答案,但我想我从你的帖子中学到了最多,所以谢谢你。:)