0

动态checkboxes是使用下面的代码创建的。

    var list = new Array();
    for(var i=0; i<data.length; i++)
    {
         $('#cContainer').append('<input type="checkbox" name="catChkBox" class="ckbox"
          id = "'+ data[i].id +'" value="'+ data[i].id + '" /> ' + data[i].name + '<br 
          />');
    }

上面的代码在document.ready函数内部。我想收集检查的值,即。data[i].name外面document.ready并把它放在一个列表中。

我尝试了下面的代码,它只显示id. 但我需要的是文字。在这里data[i].name(我从 dwr 电话中得到这个)

function showSelectedValues()
{
  alert("--------------" + $("input[name=catChkBox]:checked").map(
     function () {return this.value;}).get().join(","));
}

我将从showSelectedValues()其他一些方法调用,我将在其中使用这些值。有什么想法吗???

4

3 回答 3

2
$("input[name=catChkBox]:checked").val();
于 2013-04-12T11:43:35.763 回答
1

为每个checkbox添加一个label

var list = new Array();
for(var i=0; i<data.length; i++)
{
     $('#cContainer').append('<input type="checkbox" name="catChkBox" class="ckbox"
      id = "'+ data[i].id +'" value="'+ data[i].id + '" /><label for="'+ data[i].id +'">' + data[i].name + '</label><br/>');
}

然后使用下面的代码获取与每个检查相关联的文本checkbox

$("input[name=catChkBox]:checked + label").text();

更新 :

要将值保存到数组中,请使用以下代码:

function ConvertSelectedValuesToList()
{
  list = $("input[name=catChkBox]:checked + label").map(function () {
      return $(this).text();
  }).get();
}

如果您想创建一个逗号分隔的值字符串,请在 . 之后添加join(",")get()但它不再是数组了。

于 2013-04-12T11:55:13.270 回答
1

data[i].name永远不会写入输入元素,因此不是它的一部分。它只是元素后面的文本。

我建议添加一个包含您感兴趣的值的数据属性类似于:

var list = new Array();

for (var i = 0; i < data.length; i++) {
    $('#cContainer').append('<input type="checkbox" data-name="' + data[i].name + '" name="catChkBox" class="ckbox" id = "' + data[i].id + '" value="' + data[i].id + '" /> ' + data[i].name + '<br/>');
}

注意data-name="' + data[i].name + '"上面。

然后你可以更新你的方法来简单地查询数据属性,类似于这样:

function showSelectedValues() {
    alert("--------------" + $("input[name=catChkBox]:checked").map(function () {
        return $(this).data('name');
    }).get().join(","));
}

演示- 使用数据属性


于 2013-04-12T11:56:06.683 回答