Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.01.2018, 01:08
Аспирант
Отправить личное сообщение для Pantela Посмотреть профиль Найти все сообщения от Pantela
 
Регистрация: 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, последовательность не имеет отношения...

Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 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>
Ответить с цитированием
  #3 (permalink)  
Старый 18.01.2018, 02:07
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 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
Ответить с цитированием
  #4 (permalink)  
Старый 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>
Ответить с цитированием
  #5 (permalink)  
Старый 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>
Ответить с цитированием
  #6 (permalink)  
Старый 18.01.2018, 06:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Выбросить скрытое поле, то что в item_cat должно быть именем полей, и тогда бразуер без всяких скриптов отправит на сервер выбранное.
Ответить с цитированием
  #7 (permalink)  
Старый 18.01.2018, 13:12
Аспирант
Отправить личное сообщение для Pantela Посмотреть профиль Найти все сообщения от Pantela
 
Регистрация: 25.05.2017
Сообщений: 31

Всем большое спасибо.

Без скрытого поля помоему никак, т.к. я поля выделяю записи, беру ихрнее value, и потом передаю все пачой на бекенд.
Передавать все по шагам при веденении не вариант.
Ответить с цитированием
  #8 (permalink)  
Старый 18.01.2018, 13:16
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Pantela
Без скрытого поля помоему никак, т.к. я поля выделяю записи, беру ихрнее value, и потом передаю все пачой на бекенд.
Полная чушь, а кроме того пагубная для сервера.
Ответить с цитированием
  #9 (permalink)  
Старый 18.01.2018, 13:31
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,584

рони, это всё неявно, у меня же по пунктам понятно что происходит.)
Сообщение от Pantela Посмотреть сообщение
Передавать все по шагам при веденении не вариант.
Зачем по шагам то, если у чекбоксов одно name - на сервер они прилетят в виде массива чекнутых value.
__________________
29375, 35
Ответить с цитированием
  #10 (permalink)  
Старый 18.01.2018, 13:36
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Aetae
если у чекбоксов одно name - на сервер они прилетят в виде массива чекнутых value
Если сервер, это РНР, то с таким именованием, как у автора, сервер получит только последний флажок из выбранных. Чтобы все получить имена должны быть как name="checkbox[]".

Наличие <input type="//hidden" name="checkbox-list" value=""> и оперирование его значением на сервере говорит о том, что на сервере полный бардак, а о "безопасности" даже и не думают.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите, как создать хэш таблицу (или массив) через цикл osetr Общие вопросы Javascript 6 11.11.2014 12:08
checkbox = checkbox Слейп jQuery 2 30.01.2013 15:24
Проверка, выбран ли checkbox, если обращаюсь к нему через $(this['id']) SkaN jQuery 1 02.03.2012 13:55
jqgrid tree and checkbox gaz2003 jQuery 0 17.12.2011 15:59
Функция disable для нескольких checkbox allforweb Элементы интерфейса 4 19.12.2010 17:51