Получить значение нескольких флажков с помощью jquery

Я искал в Интернете и в стеке, но я не смог найти способ решить мою проблему, поэтому я надеюсь, что кто-то может помочь мне, у меня есть мульти-флажок с тем же именем "shopitem[]", и я хочу проверить, установлен ли флажок тогда отправьте им значение в виде массива типа "1,3,5,7" в код php с помощью ajax

вот мой код:

<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 ответа

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

console.log(checkedArray);

пример

редактировать
В соответствии с предложением @DavidThomas и последним предложением вопроса: чтобы получить строку отмеченных элементов через запятую, вы должны вызвать .join() на checkedArray

checkedArray.join();

Когда используется как здесь

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

это делается автоматически

Смотрите это: 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);
 });
});
Другие вопросы по тегам