Рассмотрим простую форму с двумя кнопками отправки
<form method="post">
<button type="submit" name="command" value="cancel">Cancel Order</button>
<button type="submit" name="command" value="proceed">Save Order</button>
</form>
После отправки сервер узнает, какая кнопка отправки была использована для отправки формы, проверив значение для command
. Отлично!
В этом случае я использую обработчик события onsubmit
формы для предварительной обработки и отправки данных формы через AJAX. Например: <form method="post" onsubmit="return ajaxSubmit(this);">
Я использую эту функцию ajaxSubmit
в качестве общего способа проверки всех представленных элементов формы и отправки данных через Ajax. Это отлично подходит для определения значения текстовых полей, если флажки "отмечены", какое радио выбрано в группе и т.д. Единственное, что кажется неправильным (потому что я не уверен, как это проверить), является Отправить кнопку была использована для отправки формы. i.e В myForm["command"]
нет ничего, чтобы определить, какая из 2 команд была фактически использована.
Вместо этого существует ли способ доступа к тем же "сообщениям", которые сервер получает с помощью JavaScript до его отправки?
В противном случае, это просто недостаток, который мне нужно обойти? Какой лучший способ?
Edit: Поскольку все современные браузеры будут передавать имя/значение кнопки, используемой для отправки формы (вместе с другими соответствующими частями, например, какой вариант выбран из группы, проверено имя/значения флажка и т.д.), Кто-нибудь может объяснить, почему нет способ доступа к этим данным непосредственно перед отправкой на сервер? Есть ли причина, по которой мы не можем?