@aljo222
В процессе обучения веб-разработке

Как перед отправкой формы собрать определенные поля в json массив name:value?

В форме может быть N-ое количество полей (input, textarea, select) с классом question-field. Каждая группа полей находится внутри блока с классом question-block.

Мне нужно перед отправкой собрать все эти поля в массив и задать этот массив как значение для одного скрытого поля с name=questions.

Пробовал так:
if (form.find('.question-block').length) {
                        var data = form.find('.question-block').map(function() {
                            var obj = {};
                            $(this).find('.question-field').each(function() {
                                obj[$(this).attr('name')] = $(this).attr('value');
                            })
                            return obj;
                        }).get();
                        console.log(data);
                        form.find('input[name="questions"]').val(data);
                    }


Но почему-то в консоли у некоторых полей значение указано как undefined.
Обработчиком я вывожу значения полей и у questions указано:
[questions] => [object Object]

Что делаю не так? Как реализовать этот момент?
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
@aljo222 Автор вопроса
В процессе обучения веб-разработке
Разобрался. Просто стоило вместо $(this).attr('value'); написать $(this).val();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы