Скрыть поле формы, но не отправлять в JavaScript - PullRequest
4 голосов
/ 04 мая 2011

Я хочу скрыть некоторые поля формы по умолчанию и отображать их в группах только в зависимости от флажка.

Если пользователь отображает некоторые поля, заполняет их, но затем скрывает их с помощью флажка, будетданные все равно отправляются, если в полях есть что-то или я должен очистить их с помощью JavaScript?

Ответы [ 4 ]

2 голосов
/ 04 мая 2011

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

2 голосов
/ 04 мая 2011

Согласно спецификации html поле отправляется, если оно соответствует следующим критериям:

  • Содержится в отправляемой форме
  • Это тип ввода, выберите,кнопка
  • Содержит непустой атрибут имени
  • Если он имеетэто необходимо проверить.

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

Таким образом, чтобы полностью ответить на ваш вопрос, если какое-либо взаимодействие с формой требует, чтобы вы отправляли только то, что видимо, вы можете выполнить одно из следующих действий:

  • Переместите «видимые» элементы, чтобы они стали дочерними элементами формы (предпочтительным способом), переместите их к другому родителю, когда они не видны (после того, как анимация их скрывает).Я думаю, это должно быть проще, особенно если использовать jquery.Запомните анимацию, переместите скрытые элементы вокруг соответствующих родителей, а затем анимируйте.Кроме того, скрытыми элементами можно легко манипулировать с минимальной производительностью, поскольку браузер не пытается их повторно визуализировать, пока они не станут видимыми в любом случае.
  • Очистить данные (потерять пользовательский ввод)
  • Очиститьимена полей ввода и воссоздайте имена, когда они не будут скрыты.

Третий прием немного сложен.Я бы выбрал первый или второй, в зависимости от ваших конкретных потребностей, предпочтение отдается первому.

1 голос
/ 04 мая 2011

Чтобы оно было коротким и приятным, используйте javascript для удаления поля. Это легко и быстро, и вам не придется расширять свой серверный сценарий, чтобы определить, через что он прошел. Если вы тоже хотите, сохраните удаленный html в глобальную переменную, поэтому при переключении опции сценарий возвращается. Надеюсь, это поможет!

0 голосов
/ 04 мая 2011

Если форма только скрывается, да, данные будут отправлены, несмотря на то, что они скрыты. Вам нужно очистить их через JS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...