通过jquery检索多个复选框值

时间:2013-01-20 11:49:35

标签: jquery ajax checked

我在网上搜索和堆栈,但我找不到解决问题的方法 所以我希望有人可以帮助我 我有一个同名“shopitem []”的多重复选框,我想检查复选框是否被选中,然后将它们作为数组发送,如“1,3,5,7”到带有ajax的php代码

这是我的代码:

<form id="ShopItemForm" class="ShopItemForm" method="post" name="ShopItemForm">
    <input class="ShopItem" checked="checked" name="ShopeItem[]" id="1" value="1" type="checkbox">1
    <input class="ShopItem" name="ShopeItem[]" id="2" value="2" type="checkbox">2
    <input class="ShopItem" checked="checked" name="ShopeItem[]" id="3" value="3" type="checkbox">3
    <input class="ShopItem" name="ShopeItem[]" id="4" value="4" type="checkbox">4
    <input class="ShopItem" name="ShopeItem[]" id="5" value="5" type="checkbox">5

    <input name="submitShopItem" value="submit" class="button button-push" id="submitShopItem" type="submit">
</form>

    $(function() {
    $("#submitShopItem").click(function(e) {
                    e.preventDefault();
                    // put all checked box to array checkedArray
                    var shopItem = 
                    $("#shop-item-Loader").html('');
                    $("#shop-item-Loader").html('load');
                    $.ajax({
                            type: "POST",
                            url: "checked.php",
                            data: "act=shopItem&ShopItem="+checkedArray,
                            cache: false,
                            success: function(html){
                                alert(checkedArray);
                                $("#shop-item-Loader").html('');
                                $("#shop-item-Loader").append(html);
                            }
                    });
                });
            });

我想将所有新检查的值发送到ajax页面,如昏迷分隔字符串

2 个答案:

答案 0 :(得分:1)

请参阅:http://jsfiddle.net/Q2Kdt/

 $(function () {
 $("#submitShopItem").click(function (e) {
     e.preventDefault();
     var result = "";
     $('input[type=checkbox]').each(function (e) {
         if ($(this).is(':checked')) result = result + $(this).val() + ", ";
     });
     alert(result);
 });
 });

或按名称检查:http://jsfiddle.net/Q2Kdt/2/

$(function () {
 $("#submitShopItem").click(function (e) {
     e.preventDefault();
     var result = "";
     $("input[name*='ShopeItem[]']").filter(':checked').each(function (e) {
        result = result + $(this).val() + ", ";
     });
     alert(result);
 });
});

答案 1 :(得分:1)

var checkedArray = $("#ShopItemForm").find(":checked").map(function() {
    return this.value;
}).get();

console.log(checkedArray);

Example

修改
正如@DavidThomas和问题的最后一句所述: 要获取逗号分隔的已检查元素字符串,您必须在.join()上调用checkedArray

checkedArray.join();

像这里一样使用

data: "act=shopItem&ShopItem="+checkedArray,

自动完成