Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.07.2020, 12:10
Профессор
Отправить личное сообщение для Julia1991 Посмотреть профиль Найти все сообщения от Julia1991
 
Регистрация: 13.08.2017
Сообщений: 167

Выбор сразу нескольких значений checked и добавление их в массив
Моя задача это выбрать несколько значений checked и отправить на сервер с помощью ajax. Я выбираю значения и сохраняю их в массив, проблема в том что если пользователь выбрал, например все значения, а потом передумал и отменил некоторые checked, то элементы из массива удаляются из конца.
jQuery(document).ready(function() {

				var data = new Array();
				jQuery('#submit-ajax-cat').on('click', '.sub-cat', function() {

					jQuery(this).each(function(i) {

						if (jQuery(this).is(':checked')){
							data.push(jQuery(this).val());
						}

						else if(jQuery(this).is(':not(:checked)')){
							var index = data.indexOf(this, 1);
							data.splice(index);
						}

					});

					var pr = JSON.stringify(data);
					jQuery('input[name="test"]').val(pr);

				});

			});
Ответить с цитированием
  #2 (permalink)  
Старый 16.07.2020, 12:20
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Julia1991
проблема в том что если пользователь выбрал, например все значения, а потом передумал
А зачем вы готовите массив вместо того, чтобы получать выбранное при отправлении запроса на сервер?
Ответить с цитированием
  #3 (permalink)  
Старый 16.07.2020, 12:49
Профессор
Отправить личное сообщение для Julia1991 Посмотреть профиль Найти все сообщения от Julia1991
 
Регистрация: 13.08.2017
Сообщений: 167

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

Сообщение от Julia1991
Потому что значения для выбора генерируются динамически
И что? Вы же пишите, что выбор отправляете на сервер, а значит в этот момент все сформировано/выбрано. А браузер отправляет на север только выбранные флажки/кнопки, так же поступает и JQ. То есть, в обработке события submit формы достаточно JSON.stringify(form.serializeArray()) как данные для отправления, а не через пень колоду:

var pr = JSON.stringify(data);
jQuery('input[name="test"]').val(pr);


Вы просто усложняет жизнь и себе, и браузерам с сервером.
Ответить с цитированием
  #5 (permalink)  
Старый 16.07.2020, 13:10
Профессор
Отправить личное сообщение для Julia1991 Посмотреть профиль Найти все сообщения от Julia1991
 
Регистрация: 13.08.2017
Сообщений: 167

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

Сообщение от Julia1991
Отправляется только первое значение из всех выбранных
Покажите html код формы, которая отправляется, либо часть ее, чтобы можно было понять. Пока можно сказать только одно - иметь массу элементов формы, которые игнорировать и впихнуть их все в один ее элемент, это нонсенс.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как минимумом операций заполнить или лучше сразу объявить массив ц.чисел от X до Y? Svorg Общие вопросы Javascript 28 16.11.2018 21:10
Добавление и удаление ингредиентов в массив rostik1991 jQuery 0 12.11.2015 10:28
Добавление нескольких колонок в таблицу nanoT1m Элементы интерфейса 3 08.06.2014 22:45
Добавление в массив методом push. dima*** Общие вопросы Javascript 9 18.02.2013 13:39
select + выбор с отображением сразу it_tech Элементы интерфейса 3 26.06.2012 19:52