将复选框值映射到空数组

时间:2014-08-18 18:36:07

标签: javascript jquery html arrays

我有一系列与复选框相关的数组。

这是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/

中的内容类似

1 个答案:

答案 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([]);
    }
});

看到这个小提琴:

http://jsfiddle.net/slippery_pete/ddpnhww5/1/