背景
我有一个复选框的表格,按名称分组,每个复选框包含一个时间值.HTML的一个例子:
提交表单时,将按照POST
我希望的方式输入值; 所有检查的时间都在tuesday[]
数组中.
问题
我想用一些客户端验证jQuery
.我想检查是否至少选中了一个复选框.
我已经尝试将它存储到var中,如下所示:
var availTuesday = $("input:checkbox[name='tuesday']:checked");
但是当我这样做时console.log(availTuesday);
,没有显示任何内容(无论是否检查某些内容).我也试过了console.log(availTuesday.serialize());
题:
我怎么能检索的用户选定值tuesday[]
复选框组,以及为其他日期(wednesday[]
,thursday[]
,等)?
谢谢.
选择器不正确,将其更改为:
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); }