Передавать массив через checkbox
Есть форма, где много полей
<input type="checkbox" name="checkbox" value="" item_cat="list"> <input type="checkbox" name="checkbox" value="" item_cat="food"> <input type="checkbox" name="checkbox" value="" item_cat="cars"> Хочу при клике на поле сохранять/удалять его значение item_cat в скрытое поле, что бы потом передать бекенд.
$(document).on("click", "[name=checkbox]", function(){
var c_pref = $(this).attr('item_pref');
});
В скрытое поле хочу соберать их виде food,cars,list, последовательность не имеет отношения... Спасибо. |
Pantela,
http://api.jquery.com/serialize/
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function() {
$(document).on("click", "[name=checkbox]", function(){
var c_pref = [];
$("[name=checkbox]:checked").attr('item_cat', function(i, item) {
c_pref.push(item)
});
c_pref += "";
alert(c_pref);
});
});
</script>
</head>
<body>
<input type="checkbox" name="checkbox" value="" item_cat="list">
<input type="checkbox" name="checkbox" value="" item_cat="food">
<input type="checkbox" name="checkbox" value="" item_cat="cars">
</body>
</html>
|
<input type="checkbox" name="checkbox" value="" item_cat="list">
<input type="checkbox" name="checkbox" value="" item_cat="food">
<input type="checkbox" name="checkbox" value="" item_cat="cars">
<input type="//hidden" name="checkbox-list" value="">
<script type="text/javascript" src="//code.jquery.com/jquery-1.9.1.js"></script>
<script>
$(document).on('click', 'input[name="checkbox"]', function(){
$('input[name="checkbox-list"]').val(
$('input[name="checkbox"]:checked')
.map(function(){
return this.getAttribute('item_cat')
})
.toArray()
.join(',')
)
});
</script>
|
Aetae,
Цитата:
<input type="checkbox" name="checkbox" value="" item_cat="list">
<input type="checkbox" name="checkbox" value="" item_cat="food">
<input type="checkbox" name="checkbox" value="" item_cat="cars">
<input type="//hidden" name="checkbox-list" value="">
<script type="text/javascript" src="https://code.jquery.com/jquery-1.9.1.js"></script>
<script>
$(document).on('click', 'input[name="checkbox"]', function(){
$('input[name="checkbox-list"]').val(
$.map($('input[name="checkbox"]:checked'),function(el){
return el.getAttribute('item_cat')
})
)
});
</script>
|
или так
<input type="checkbox" name="checkbox" value="" item_cat="list">
<input type="checkbox" name="checkbox" value="" item_cat="food">
<input type="checkbox" name="checkbox" value="" item_cat="cars">
<input type="//hidden" name="checkbox-list" value="">
<script type="text/javascript" src="https://code.jquery.com/jquery-1.9.1.js"></script>
<script>
$(document).on('click', 'input[name="checkbox"]', function(){
$('input[name="checkbox-list"]').val(
$('input[name="checkbox"]:checked')
.map(function(){
return this.getAttribute('item_cat')
})
.get()
)
});
</script>
|
Выбросить скрытое поле, то что в item_cat должно быть именем полей, и тогда бразуер без всяких скриптов отправит на сервер выбранное.
|
Всем большое спасибо.
Без скрытого поля помоему никак, т.к. я поля выделяю записи, беру ихрнее value, и потом передаю все пачой на бекенд. Передавать все по шагам при веденении не вариант. |
Цитата:
|
рони, это всё неявно, у меня же по пунктам понятно что происходит.)
Цитата:
|
Цитата:
Наличие <input type="//hidden" name="checkbox-list" value=""> и оперирование его значением на сервере говорит о том, что на сервере полный бардак, а о "безопасности" даже и не думают. |
| Часовой пояс GMT +3, время: 19:43. |