Javascript.RU

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

Добавление данных в массив
Добрый день.
Есть форма, вот ее основной блок, таких блоков несколько, различаются они только значением input с классом osnova (Программа 1, программа 2 и т.д.)

<div class="progblock">
<label class="bold_name"><input type="checkbox" name="public" class="public osnova" value="Программа 1" > Программа 1</label>

<div class="napravlenie hides" style="display:none;">
		<div class="checkbox col-xs-6 forma_obuchen">
            <select name="ot_forma1" class="form-control">
                           <option value="">Форма обучения</option>
			   <option value="Очная">Очная</option>
			   <option value="Дистанционная">Дистанционная</option>
			</select>
        </div>
		<div class="checkbox col-xs-6 kolvo_uchenik">
		<input type="number" name="ot_kolvo1" value="" class="form-control" placeholder="Число слушателей">
        </div>
		</div>
<div class="clearfix"></div>
</div>
<a href="#" class="podtv">Заполнить форму</a>



Снизу есть ссылка - Заполнить форму - по нажатию которой мне нужно собрать все выбранные пользователем checkbox (их значения) и значения, выбранные в соответствующих полях под этим чекбоксом (форма обучения и число слушателей).

Данные выбранных чекбокосов я забиваю в массив таким методом:
var arr=$('input:checkbox:checked').map(function() {return this.value;}).get();

А вот как мне в массив добавить остальные данные? Получается мне нужно создать многомерный массив, где будут данные:
array {
[0] = Array {
                 [0] = Программа 1
                 [1] = Дистанционная
                 [2] = 5
                 }
[1] = Array {
                 [0] = Программа 1
                 [1] = Очная
                 [2] = 10
                 }
...
}
Ответить с цитированием
  #2 (permalink)  
Старый 16.11.2016, 13:22
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от Batyabest
Получается мне нужно создать многомерный массив
Можно сделать массив объектов...

var arr=[
   {
      name: 'Программа 1',
      type: 'Дистанционная',
      val: 5
   },
   {
      name: 'Программа 1',
      type: 'Очная',
      val: 10
   }
]
Ответить с цитированием
  #3 (permalink)  
Старый 16.11.2016, 13:31
Профессор
Отправить личное сообщение для Batyabest Посмотреть профиль Найти все сообщения от Batyabest
 
Регистрация: 14.09.2013
Сообщений: 252

Сообщение от ksa Посмотреть сообщение
Можно сделать массив объектов...

var arr=[
   {
      name: 'Программа 1',
      type: 'Дистанционная',
      val: 5
   },
   {
      name: 'Программа 1',
      type: 'Очная',
      val: 10
   }
]
А как мне вместо значения добавлять туда только те значения Программ, чекбоксы которых отмечены? То есть выбрал пользователь программу 1, выбрал форму обучения Дистанционную, количество слушателей выбрал 5 - вот я это вижу в массиве.
Ответить с цитированием
  #4 (permalink)  
Старый 16.11.2016, 13:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Batyabest,
var arr=$.map($('input:checkbox:checked'),function(el) {
var parent = $(el).parents('.progblock');
return [el.value, $('select',parent).val(), $('[type="number"]',parent).val()]});
Ответить с цитированием
  #5 (permalink)  
Старый 16.11.2016, 13:37
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от Batyabest
А как мне вместо значения добавлять туда только те значения Программ, чекбоксы которых отмечены?
Читай нужные данные... Проверяй... Формируй массив...
Ответить с цитированием
  #6 (permalink)  
Старый 16.11.2016, 13:52
Профессор
Отправить личное сообщение для Batyabest Посмотреть профиль Найти все сообщения от Batyabest
 
Регистрация: 14.09.2013
Сообщений: 252

Сообщение от рони Посмотреть сообщение
Batyabest,
var arr=$.map($('input:checkbox:checked'),function(el) {
var parent = $(el).parents('.progblock');
return [el.value, $('select',parent).val(), $('[type="number"]',parent).val()]});
Спасибо, в принципе то, что нужно. Но он все кидает в массив по порядку, название, форма обучения, количество и т.д. А можно ли именно в многомерный массив складывать?
Я сейчас попытаюсь объяснить что мне в итоге нуджно, а Вы подскажите, как легче сделать.
Эти данные в дальнейшем отправляются в модальное окно в котором есть форма (имя, телефон и т.д.) А значения полей просто снизу выводится списком должны:
Наименование: Программа 1
Форма обучения: Дистанционная
Количество: 5 человек

Наименование: Программа 2
Форма обучения: Очная
Количество: 17 человек

Далее человек заполнив форму жмет "Отправить" и уходит на почту уже и данные формы и данные выбранных на первом этапе полей.
Ответить с цитированием
  #7 (permalink)  
Старый 16.11.2016, 14:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Batyabest,
var arr= [].map.call($('input:checkbox:checked'),function(el) {
var parent = $(el).parents('.progblock');
return {'Наименование' : el.value, 'Форма обучения' : $('select',parent).val(), 'Количество' : $('[type="number"]',parent).val()}});
alert(JSON.stringify(arr, null, 4))
Ответить с цитированием
  #8 (permalink)  
Старый 16.11.2016, 14:25
Профессор
Отправить личное сообщение для Batyabest Посмотреть профиль Найти все сообщения от Batyabest
 
Регистрация: 14.09.2013
Сообщений: 252

Сообщение от рони Посмотреть сообщение
Batyabest,
var arr= [].map.call($('input:checkbox:checked'),function(el) {
var parent = $(el).parents('.progblock');
return {'Наименование' : el.value, 'Форма обучения' : $('select',parent).val(), 'Количество' : $('[type="number"]',parent).val()}});
alert(JSON.stringify(arr, null, 4))
Сейчас то что нужно. Получилась JSON строка?
А как мне ее разобрать чтобы вывести в модальном окне?
Свой массив одномерный я так разбирал:
for (var index in arr)	{
	    	for (var mass in index )
	   $('.proverka_programm').append('<li>' + arr[mass] + '</li>');
	   $("#myModal").show("slow");
	}


А тут как быть?
JSON.parse() возвращает массив из объектов, как быть далее?
Ответить с цитированием
  #9 (permalink)  
Старый 25.11.2016, 12:10
Профессор
Отправить личное сообщение для Batyabest Посмотреть профиль Найти все сообщения от Batyabest
 
Регистрация: 14.09.2013
Сообщений: 252

Сообщение от рони Посмотреть сообщение
Batyabest,
var arr= [].map.call($('input:checkbox:checked'),function(el) {
var parent = $(el).parents('.progblock');
return {'Наименование' : el.value, 'Форма обучения' : $('select',parent).val(), 'Количество' : $('[type="number"]',parent).val()}});
alert(JSON.stringify(arr, null, 4))
Рони, помоги)))
Как мне подвязать валидацию полей, которые вложены в чекбоксы?
Пытаюсь так подвязаться, но он выдет сообщение об ошибке, но функция продолжает далее работать. В результате я в модельном окне вижу только те данные, которые заполнены правильно. А как вообще прервать выполнение скрипта и не показывать модалку?

var arr= [].map.call($('input:checkbox:checked'),function(el) {
		var parent = $(el).parents('.progblock');
		if ($('select',parent).val() == '') {
	alert('Выберите форму обучения!');
	return;
		}
		else if ($('[type="number"]',parent).val() == '') {
	alert('Введите количество слушателей!');
	return;
		}
		else {
		return {
			'name' : el.value, 
			'type' : $('select',parent).val(), 
			'val' : $('[type="number"]',parent).val()
			}
		}
		});
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение данных из файла в массив TheSingleElk Общие вопросы Javascript 2 16.06.2016 01:09
Добавление данных в многомерный массив rneft Элементы интерфейса 11 28.03.2016 17:56
Двойная Фильтрация данных таблицы David0707 Общие вопросы Javascript 0 19.03.2012 13:00
Подкачка данных в массив simple Общие вопросы Javascript 6 01.10.2010 09:20
Как передать массив данных на сервер DVVID Общие вопросы Javascript 7 08.04.2010 12:11