18.01.2018, 01:08
|
Аспирант
|
|
Регистрация: 25.05.2017
Сообщений: 31
|
|
Передавать массив через 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, последовательность не имеет отношения...
Спасибо.
|
|
18.01.2018, 01:35
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
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>
|
|
18.01.2018, 02:07
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,584
|
|
<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>
__________________
29375, 35
|
|
18.01.2018, 03:17
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
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>
|
|
18.01.2018, 03:19
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
или так
<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>
|
|
18.01.2018, 06:49
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Выбросить скрытое поле, то что в item_cat должно быть именем полей, и тогда бразуер без всяких скриптов отправит на сервер выбранное.
|
|
18.01.2018, 13:12
|
Аспирант
|
|
Регистрация: 25.05.2017
Сообщений: 31
|
|
Всем большое спасибо.
Без скрытого поля помоему никак, т.к. я поля выделяю записи, беру ихрнее value, и потом передаю все пачой на бекенд.
Передавать все по шагам при веденении не вариант.
|
|
18.01.2018, 13:16
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Pantela
|
Без скрытого поля помоему никак, т.к. я поля выделяю записи, беру ихрнее value, и потом передаю все пачой на бекенд.
|
Полная чушь, а кроме того пагубная для сервера.
|
|
18.01.2018, 13:31
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,584
|
|
рони, это всё неявно, у меня же по пунктам понятно что происходит.)
Сообщение от Pantela
|
Передавать все по шагам при веденении не вариант.
|
Зачем по шагам то, если у чекбоксов одно name - на сервер они прилетят в виде массива чекнутых value.
__________________
29375, 35
|
|
18.01.2018, 13:36
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Aetae
|
если у чекбоксов одно name - на сервер они прилетят в виде массива чекнутых value
|
Если сервер, это РНР, то с таким именованием, как у автора, сервер получит только последний флажок из выбранных. Чтобы все получить имена должны быть как name="checkbox[]".
Наличие <input type="//hidden" name="checkbox-list" value=""> и оперирование его значением на сервере говорит о том, что на сервере полный бардак, а о "безопасности" даже и не думают.
|
|
|
|