我有一系列与复选框相关的数组。
这是HTML:
<input type="checkbox" value="value1">Value 1
<input type="checkbox" value="value2">Value 2
<input type="checkbox" value="value3">Value 3
在我的jQuery中,我将这些数组定义如下:
var value1 = ['item1', 'item2', 'item3'];
var value2 = ['itemA', 'itemB', 'itemC'];
var value3 = ['item!', 'item@', 'item#'];
我想根据选中的复选框创建一个新数组,并基本上创建一个数组数组。我已经尝试了以下代码,但它无法正常工作:
var newArray = [];
$('input[type=checkbox]:checked').map(function(){
newArray.push($(this).val());
});
我可以按如下方式对newArray进行硬编码:
var newArray = [value1, value2, value3];
在填充newArray之后,我想循环遍历newArray中包含的数组的值,以选择随机索引并将它们推送到randArray中。如果我按如下方式对newArray进行硬编码,则此部分有效:
var newArray = [itemC, item!, item1]
但是如果我尝试将复选框值映射到newArray,它将无效。一旦我填充了newArray,我想确保newArray中每个子集中至少有一个项目包含在randArray中。我目前遇到困难的部分是使用基于检查内容的子集填充newArray。
我想要完成的一个示例与http://passwordsgenerator.net/
中的内容类似答案 0 :(得分:0)
此语法 not 将复选框值设置为名为value1
的js变量的值:
<input type="checkbox" value="value1">Value 1
你可能需要这样的东西:
<input type="checkbox" value="item1,item2,item3">Value 1
<input type="checkbox" value="itemA,itemB,itemC">Value 2
<input type="checkbox" value="item!,item@,item#">Value 3
然后你的newArray创建如下:
var newArray = [];
$('input[type=checkbox]').map(function () {
var $cb = $(this);
if ($cb.is(":checked")) {
newArray.push($cb.val().split(','));
} else {
newArray.push([]);
}
});
看到这个小提琴: