设置复选框值数组和另一个值数组

时间:2018-09-11 15:28:17

标签: javascript jquery

我在表单上有一组输入复选框,如下所示:

<input type="checkbox" value=""><span value="Atlanta">Atlanta</span>
<input type="checkbox" value=""><span value="Charleston">Charleston</span>
<input type="checkbox" value=""><span value="Chicago">Chicago</span> and etc.

以上内容是由于运行此$dataTable.ajax.reload()而造成的,由于某种原因,这会删除我表单中复选框的值。这些复选框未进行硬编码,正在动态生成。

我意识到我可以只刷新页面并获取所有值,而不是执行下面的操作,但是我想看看是否还有另一种方法可以执行下面的操作。

任何人,我都取了每个复选框的span文本,将其转换为数组,并将其命名为spanarr。我还将输入复选框变成了一个名为emergcheck的数组。

var emergspanarr = $('#emergencyForm span').toArray();
var spanarr = [];
var emergcheck = $('#emergencyForm input[type="checkbox"]');

emergspanarr.map(function(item){
    spanarr.push(item.innerHTML.trim());
});

我正在尝试将一个span值(来自spanarr)插入每个输入复选框(来自emergcheck)。

到目前为止我所拥有的:

for (var j = 0; j < emergcheck.length; j++){
    for (var k = 0; k < spanarr.length; k++){
        emergcheck.attr("value", function(i, val){
            return val + spanarr[k];
        })          
    }                   
}

但是它正在产生这个:

<input value="AtlantaCharlestonChicagoHouston (Sales)Houston (Terminal)Long BeachMarseillesMiamiMontreal....Santa Ana SavannahSeattleSecaucusTorontoVancouverAtlantaCharlestonChicagoHouston (Sales)Houston (Terminal)Long BeachMarseillesMiamiMontrealSanta Ana .....Santa AnaSavannahSeattleSecaucusTorontoVancouver" type="checkbox"><span value="Atlanta">Atlanta</span>

<input value="AtlantaCharlestonChicagoHouston (Sales)Houston (Terminal)Long BeachMarseillesMiamiMontreal....Santa Ana SavannahSeattleSecaucusTorontoVancouverAtlantaCharlestonChicagoHouston (Sales)Houston (Terminal)Long BeachMarseillesMiamiMontrealSanta Ana .....Santa AnaSavannahSeattleSecaucusTorontoVancouver" type="checkbox"><span value="Charleston">Charleston</span> and etc.

我希望它是这样:

<input type="checkbox" value="Atlanta"><span value="Atlanta">Atlanta</span>
<input type="checkbox" value="Charleston"><span value="Charleston">Charleston</span>
<input type="checkbox" value="Chicago"><span value="Chicago">Chicago</span

我觉得我已经接近了。我想念什么?需要另一双眼睛。谢谢

2 个答案:

答案 0 :(得分:2)

只需尝试使用以下代码更改代码-

JS代码-

for (var j = 0; j < emergcheck.length; j++){
    emergcheck.eq(j).val(spanarr[j]);                
}

也许可以帮助您。

答案 1 :(得分:1)

我认为您只需要输入的value。您可以从jQuery使用.val(),也可以将.value用作纯js。

jQuery方式:

var emergspanarr = $('#emergencyForm span').toArray();
var emergcheck = $('#emergencyForm input[type="checkbox"]').toArray();

for (var j = 0; j < emergcheck.length; j++) {
    emergcheck[j].val(emergspanarr[j].val());
}

纯js方式:

var emergspanarr = $('#emergencyForm span').toArray();
var emergcheck = $('#emergencyForm input[type="checkbox"]').toArray();

for (var j = 0; j < emergcheck.length; j++){
    emergcheck[j].value = emergspanarr[j].value;
}