获取所有选中的复选框在数组中的相应值

时间:2012-06-29 14:31:50

标签: javascript jquery arrays concatenation

请查看以下代码:

   $("#saveButton").click(function(){

        $this = $("#tableData").find("input:checked").parent().parent();

        tea = $this.find(".teaCls").text();

        $.ajax({
            type: "POST",
            url: "chkSelectedValues.php",
            data: "tea=" + tea,
            success: function(msg){
                $("#theField").html(msg);
            }

        });       

    });

现在,如果选中了多个复选框,则teaflower会最终连接所有这些字段中的text。如果选中了两个复选框,其中一个包含单词some,另一个包含单词text,则最后tea变量的值为sometext。但我希望tea是一个包含这些值的数组(在本例中为sometext),因为我需要在AJAX请求中传递它们并希望在{{1}中轻松捕获}

结构:

chkSelectedValues.php

我该怎么做?提前谢谢。

3 个答案:

答案 0 :(得分:2)

这应该有效:

var tea = $(':checked').map(function() {
    return this.value;
}).get();

演示http://jsfiddle.net/alnitak/Dwevr/

编辑已更新以反映OP的澄清:

var tea = $(':checked').map(function() {
    return $(this).parent().siblings('.teaCls').text();
}).get();

答案 1 :(得分:1)

呀。解决了..感谢大家的帮助。

var md = new Array();
$("input:checkbox").filter(":checked").parent().parent().each(function(){

   md.push($(this).find(".teaCls").text());

});

现在md是我的英雄!

答案 2 :(得分:1)

给我一​​个镜头我认为这正是你想要的减去alert()部分用于演示目的。这也是jsFiddle:http://jsfiddle.net/pT2bP/

<table id="tableData">
    <tr>
        <td class="teaCls">FooA</td>
        <td><input type="checkbox" value="BarA"/></td>
    </tr>
    <tr>
        <td class="teaCls">FooB</td>
        <td><input type="checkbox" value="BarB"/></td>
    </tr>
    <tr>
        <td class="teaCls">FooC</td>
        <td><input type="checkbox" value="BarC"/></td>
    </tr>
</table>

<button id="saveButton">Save</button>


$(function() {

    $("#saveButton").click(function() {
        var keyValue = {};

        $("#tableData :checkbox:checked").each(function() {
            var $this = $(this);      
            keyValue[$this.val()] = $this.closest('tr').find('.teaCls').html();
        });
        alert($.param(keyValue));
    });
})