Если HTML-форма имеет две кнопки, как узнать, на какую из них нажали?

Предположим, у меня есть следующая 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-формах? Как вы это делаете?

4 ответов


Да, вы можете положиться на это; это полностью документировано здесь. Конкретные соответствующие строки говорят:

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

и

Если форма содержит более одной кнопки отправки, только активированная кнопка отправки успешна.


Да, вы можете полагаться на это поведение.

, когда <input type="submit" name="queue" value="Queue item"> нажата, поле "очередь" будет установлено, а "отправить" не будет.

в то время как при нажатии на другой, поле "отправить" будет установлено, а "очередь" не будет.

Если вы не уверены в этом, вы можете разделить их на 2 формы и работать над этим таким образом.


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

это стандарт. Так как это input тег и value, это означает, что вы получить value представило.


разделить форму на две формы, реплицируя любые другие входные данные, необходимые для другого действия. Или, если вам действительно просто нужно знать, хочет ли пользователь "очередь против отправки" элемента, измените обе кнопки отправки на выбор радио, чтобы переключаться между двумя параметрами, и иметь новую, отдельную кнопку "отправить форму".

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