2012-06-04 2 views
4

Проектирование и обработка формы, в которой пользователь может добавить произвольное количество новых полей ввода, очень утомительно без использования JavaScript.Как создать расширяемую HTML-форму без JavaScript?

В настоящее время я делаю следующее: используя две разные кнопки отправки в форме, одна для добавления нового поля ввода и одна для отправки формы, которая выводится в запрос базы данных.

  • используемый метод POST

    для добавления новых полей ввода, я хотел бы использовать GET но поскольку два метода в одном виде не возможно, я должен сделать это в запросе POST ,

  • , что делает это для одного типа полей ввода довольно простым, но если вам нужно сделать это для подформ (некоторые группы полей ввода в одной форме), это станет не только утомительным, но и ошибкой -prone!

Я не удовлетворен, есть более умный способ это осуществить, не начать писать много кода обработки и перенаправление или, по крайней мере, облегчить реализацию, чтобы уменьшить риск ошибок!

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

С включенным JavaScript Я бы предложил отдельное решение, меня интересует только решение проблемы возврата, это не обычный случай.

+2

Почему вы хотите установить связь с сервером, чтобы добавить новое поле формы, когда это можно было бы сделать только на клиенте? Кроме того, почему эта метка «Java»? – Jivings

+1

Я согласен: переход туда-обратно к серверу, чтобы добавить поле, - это страшный пользовательский интерфейс. Нет причин НЕ использовать JavaScript на клиенте для выполнения этой задачи. –

+1

@Diodeus Что делать, если JavaScript недоступен? – Mahoni

ответ

1

См., Работая без JavaScript, строго ограничивает ваши возможности: вы должны полагаться на стандартный цикл HTTP-запроса/ответа. Другими словами, вам нужно перестроить новую страницу (добавив поле ввода) и отправить эту новую страницу каждый раз, когда - нет обходных путей.

Вот как я бы реализовать:

<form action="/path/to/action" method="post"> 
    <input name="param_a" /> 
    <input name="param_b" /> 
    <button type="submit" name="next_input" value="param_c">Add a field</button> 
    <button type="submit" name="submit">Submit your form</button> 
</form> 

... то в стороне сервера код, который я бы просто проверить, отправляется ли next_input парам или нет. Если отправлено, его значение будет использоваться для получения элемента управления, который должен быть добавлен, и дать соответствующее значение (param_d, например), к следующему next_input.

ОБНОВЛЕНИЕ: но я просто не могу не спросить, действительно ли это необходимо. Обычно мы разрабатываем для случаев «Нет JS», когда эти страницы являются типичными целевыми страницами (отсканированными поисковыми роботами). Думая о том, что некоторые пользователи перейдут на вашу страницу без включенной JS, но готовы использовать ее со всеми хорошими вещами, которые ... возможно, это не очень экономично, мягко говоря.)

Смежные вопросы