Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Выбор сразу нескольких значений checked и добавление их в массив (https://javascript.ru/forum/jquery/80695-vybor-srazu-neskolkikh-znachenijj-checked-i-dobavlenie-ikh-v-massiv.html)

Julia1991 16.07.2020 12:10

Выбор сразу нескольких значений 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);

				});

			});

laimas 16.07.2020 12:20

Цитата:

Сообщение от Julia1991
проблема в том что если пользователь выбрал, например все значения, а потом передумал

А зачем вы готовите массив вместо того, чтобы получать выбранное при отправлении запроса на сервер?

Julia1991 16.07.2020 12:49

Потому что значения для выбора генерируются динамически, и у меня несколько родительский категорий, при выборе которой подстраиваются значения.

laimas 16.07.2020 13:07

Цитата:

Сообщение от Julia1991
Потому что значения для выбора генерируются динамически

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

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


Вы просто усложняет жизнь и себе, и браузерам с сервером.

Julia1991 16.07.2020 13:10

Отправляется только первое значение из всех выбранных

laimas 16.07.2020 13:16

Цитата:

Сообщение от Julia1991
Отправляется только первое значение из всех выбранных

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


Часовой пояс GMT +3, время: 10:55.