Javascript jQuery将选中的复选框存储到数组中
背景 我有一个由复选框组成的表格网格,按名称分组,每个复选框都包含一个时间值。HTML的一个示例: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
<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[]']
。这里有很多很好的答案,所以很难选出最好的答案,但我想我从你的帖子中学到了最多,所以谢谢你。:)这里有很多很棒的答案,所以很难选出最好的答案,但我想我从你的帖子中学到了最多,所以谢谢你。:)