Если в форме HTML есть две кнопки <input type="submit">, как узнать, что было нажато?
Предположим, что у меня есть следующая форма HTML:
<form>
...
<input type="submit" name="queue" value="Queue item">
<input type="submit" name="submit" value="Submit item">
</form>
Как узнать, на какую кнопку нажал пользователь (без использования javascript)?
Я просмотрел представленные данные, и кажется, что при нажатии "Queue Item"
на сервер отправляется "queue" = "Queue Item"
. И когда нажата кнопка "Submit item"
, тогда "submit" = "Submit item"
отправляет отправленные.
Могу ли я полагаться на это поведение? Документировано ли где-то в стандарте HTML-формы? Как вы это делаете?
Ответы
Ответ 1
Да, вы можете положиться на это; он полностью документирован здесь. В конкретных соответствующих строках говорится:
Когда форма отправляется для обработки, некоторые элементы управления имеют свое имя в паре с их текущим значением, и эти пары передаются с формой. Те элементы управления, для которых представлены пары имя/значение, называются успешными элементами управления.
и
Если форма содержит более одной кнопки отправки, успешно активирована только кнопка отправки.
Ответ 2
Да, вы можете положиться на это поведение.
При нажатии <input type="submit" name="queue" value="Queue item">
поле "queue" будет установлено, и "отправить" не будет.
В то время как при нажатии на другое, поле "отправить" будет установлено, а "очередь" не будет.
Если вы не уверены в этом, вы можете разбить их на 2 формы и работать над ним таким образом.
Ответ 3
Вы можете положиться на это поведение. Вы получаете значение ввода. Я бы использовал javascript
для переключения значения скрытой формы, но поскольку вы упомянули no javascript
, у вас нет нескольких вариантов.
Это стандарт. Поскольку это тег input
и имеет value
, это означает, что вы отправили value
.
Ответ 4
Разделите форму на две формы, реплицируя любые другие входы, необходимые для другого действия. Или, если вам просто нужно знать, хочет ли пользователь "отправить в очередь или отправить" элемент, измените обе кнопки отправки на радиовыборы, чтобы переключаться между двумя параметрами, и иметь новую отдельную кнопку "отправить форму".
В этой ситуации, если вы хотите выбрать один клик, вы можете использовать Javascript для определения того, когда выбран один из переключателей, и автоматически отправить форму сразу. (Использование Javascript для интерфейса пользователя, а не обработка формы)