0

我在网上搜索和堆栈,但我找不到解决我的问题的方法,所以我希望有人可以帮助我我有一个同名的多复选框“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 页面,如逗号分隔的字符串

4

2 回答 2

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);
 });
});
于 2013-01-20T12:02:11.600 回答
1
var checkedArray = $("#ShopItemForm").find(":checked").map(function() {
    return this.value;
}).get();

console.log(checkedArray);

例子

编辑
正如@DavidThomas 和问题的最后一句话所建议的那样:要获取已检查元素的逗号分隔字符串,您必须.join()调用checkedArray

checkedArray.join();

像这里一样使用时

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

这是自动完成的

于 2013-01-20T12:03:38.983 回答