У меня есть длинная форма, которую я разбил на 6 шагов. Когда форма загружена, загружаются все шаги, но виден только первый шаг. У остальных есть CSS, display:none
поэтому они скрыты. Когда шаг завершен и подтвержден с помощью Javascript, для текущего шага устанавливается значение, display:none
а для нового - display:block
. На последнем этапе пользователь отправляет форму. Однако, как и ожидалось, display:block
отправляются только поля элемента на странице. Все заполненные поля в элементах с display:none
игнорируются.
Есть ли способ отправить поля внутри display:none
элементов?
Если нет, есть ли другой способ добиться того же эффекта?
javascript
css
forms
Ник Петри
источник
источник
display: none
всех моих тестах браузеры, похоже, отправляют элементы формы внутри контейнеров.Ответы:
Установите их на
visibility:hidden
иposition:absolute
вместо. Поля не будут отправлены на сервер сdisplay:none
, но будут сvisibility:hidden
. Также переключив «положение» на «абсолютное», вы должны получить тот же визуальный эффект.Обновление. Похоже, это больше не проблема ни в одном текущем браузере (по состоянию на ноябрь 2015 г.). Поля отправляются, даже если для отображения установлено значение «нет». Однако поля, которые «отключены», по-прежнему не отправляются.
источник
display:none;
. Та же проблема возникает, если поверх поля помещен другой элемент HTML.disabled
предотвращает отправку значений, но в некоторых старых браузерахdisplay:none
также будет иметь такой эффект. Имейте в виду, что этот ответ был опубликован 4 года назад и применим только к разработчикам, которым необходимо разрабатывать для этих старых браузеров.HTML4, раздел 17.13.2, прямо говорит, что даже скрытые элементы управления, использующие display: none, могут быть пригодны для отправки.
https://www.w3.org/TR/html401/interact/forms.html
Итак, если браузер игнорирует display: none, значит, он не полностью поддерживает HTML. Рекомендую перейти на настоящий браузер.
источник