Динамическая отправка формы с использованием javascript - как создать элегантный код?

StackOverflow https://stackoverflow.com/questions/911430

Вопрос

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

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

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

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

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

Это было полезно?

Решение

Сначала вам нужно получить правильный HTML-код.

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

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top