Динамическая отправка формы с использованием JavaScript - как элегантный код? - PullRequest
0 голосов
/ 26 мая 2009

Вот проблема:

Моя страница отображает набор элементов. С каждым элементом связан флажок (который является частью формы). Пользователь может установить любой из этих флажков и нажать кнопку «Удалить». На этой же странице есть кнопка «Загрузить», которая загружает список элементов Excel. В данный момент мое действие формы позволяет мне сказать: «xyzAction» и у меня есть два разных обработчика (аналогично Struts Action) - один для удаления магазинов, а другой для загрузки магазинов.

Мне сказали, что лучший способ сделать это - положиться на javascript, выполнив одно из следующих действий: 1)) Переключение форм действия при нажатии кнопок загрузки и удаления - при этом выполняются различные действия. 2) Используйте скрытую переменную «act», чтобы настроить ее на удаление / загрузку и отправку в одну форму. Действие на стороне сервера позаботится об идентификации действия и переадресации на соответствующее действие.

Подход (1) - мне кажется, очень не элегантный. Играть с формой действий кажется ненужным. Подход (2) - очевидно, не будет работать, если ваш javascript выключен и тоже не очень элегантен.

Должен быть третий способ сделать это? Что сделало бы меня счастливым?

Ответы [ 2 ]

3 голосов
/ 26 мая 2009

Похоже, вам могут понадобиться две разные формы для двух разных действий.

1 голос
/ 27 мая 2009

Вы должны сначала получить правильный HTML.

У вас есть два разных действия, поэтому у вас должно быть две формы - хорошее практическое правило заключается в том, что каждая форма должна иметь только одну кнопку отправки. Это лучший метод для HTML, который гарантирует, что страница работает без JS и других хитростей.

Как только у вас будет такая страница, используйте JS, чтобы манипулировать DOM для создания нужного вам интерфейса. Это использует JS, чтобы добавить behvour к пользовательскому интерфейсу, и это лучшая практика для ненавязчивого JS.

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

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