Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Не заполняется FormData из DOM элемента формы (https://javascript.ru/forum/dom-window/74713-ne-zapolnyaetsya-formdata-iz-dom-ehlementa-formy.html)

delgus 02.08.2018 15:27

Не заполняется FormData из DOM элемента формы
 
Браузер Firefox 61.
Отрезок кода такой:
https://pastebin.com/gp1RywaK

console.log(document.forms[this.formId]);//Здесь выводится DOM Element все хорошо
let formData = new FormData(document.forms[this.formId]);
console.log(formData);//но formData все равно пустой.

Может из-за того что в форме 4 кнопки?
В песочнице тоже не работает - https://jsfiddle.net/q9zgjfsm/11/
Вот здесь написано что FormData Можно заполнять из элемента. Но уменя до сих пор ничего не работает

https://developer.mozilla.org/en-US/...rmData_Objects

delgus 02.08.2018 15:52

неправильно проверял объект FormData. Надо через getAll().
Исправленный вариант - https://jsfiddle.net/q9zgjfsm/16/
НО append() работает, а автозаполнение из формы нет (((

Nexus 02.08.2018 15:59

delgus, что не так-то?

Nexus 02.08.2018 15:59

formData.getAll("answers2") возвращает пустой массив, потому что у вас в форме нет чекнутых радио-баттонов.

delgus 02.08.2018 16:02

Nexus,
Спасибо, я сам вот только 2 минуты назад допер)
Тупая ошибка такая:lol:

Dilettante_Pro 02.08.2018 16:25

delgus,
И еще вы скоро столкнетесь с проблемой с чекбоксами с одинаковыми именами name="answers0".

delgus 03.08.2018 12:31

Dilettante_Pro,
одинаковые имена потому что это ответы на один вопрос, вообще в реализации у меня будет name="Answers[индекс вопроса]". Тоесть на сервере я буду получать массив Answers, если чекбоксы то в массиве Answers[вопрос] окажется массив со значением value выбранных чекбоксов

Dilettante_Pro 03.08.2018 13:06

delgus,
А не лучше ли варианты ответа yes/no выбирать через радио?
А чекбокса для этого достаточно одного.

delgus 03.08.2018 14:11

Dilettante_Pro,
Это наброски для виджета викторины и я использую для демо простые данные чтобы не нагружать лишним. В реале вопросы будут выглядеть так

1. Туфелька-Инфузория - это...
Бактерия
Вирус
Простейший, одноклеточный организм
Модная обувь
Микроб

Будет возможность выбора одного варианта из нескольких, или множественный выбор и текстовый инпут)
Вы оказались правы - чекбоксы перезатирают друг друга, не понимаю почему я думал что они сохраняются массивом. для каждого чекбокса получается надо свое имя

Nexus 03.08.2018 14:24

delgus, можно и массивом.
<input name="someName[]" value="first" type="checkbox"/>
<input name="someName[]" value="second" type="checkbox"/>


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