Получить значение нескольких флажков с помощью 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);
});
});