Если вы отправляете форму через Javascript (т. Е. formElement.submit()
или что-либо эквивалентное), то нет кнопок отправки считаются успешными, и ни одно из их значений не включается в отправленные данные. (Обратите внимание, что если вы отправляете форму, используя submitElement.click()
, то отправка, на которую вы ссылались, считается активной; на самом деле это не входит в рамки вашего вопроса, поскольку здесь кнопка отправки однозначна, но я подумал, что ' Я хотел бы включить его для людей, которые читают первую часть и интересуются, как сделать кнопку отправки успешной с помощью отправки формы JS. Конечно, обработчики отправки формы по-прежнему будут запускаться таким образом, тогда как они не будут через form.submit()
, так что это еще один источник рыба ...)
Если форма отправляется нажатием клавиши Enter в поле, не являющемся текстовым, тогда пользовательский агент сам решает, что ему нужно. В спецификациях ничего не говорится об отправке формы с использованием клавиши ввода в поле ввода текста (если вы нажимаете на кнопку и активируете ее с помощью пробела или чего-либо еще, то нет никаких проблем с этой конкретной отправкой кнопка однозначно используется). Все, что он говорит, - то, что форма должна быть отправлена, когда кнопка отправки активирована, это даже не требование, чтобы нажать ввод, например. текстовый ввод отправит форму.
Я считаю, что Internet Explorer выбирает кнопку отправки, которая появляется первой в источнике; У меня такое ощущение, что Firefox и Opera выбирают кнопку с самым низким tabindex, возвращаясь к первому определенному, если ничего не определено. Существуют также некоторые сложности, связанные с тем, имеет ли отправляемый атрибут значение по умолчанию, отличное от IIRC.
Смысл в том, что не существует определенного стандарта для того, что здесь происходит, и это целиком и полностью зависит от браузера - поэтому, насколько это возможно, независимо от того, что вы делаете, старайтесь не полагаться на какое-либо конкретное поведение. Если вы действительно должны знать, вы, вероятно, можете узнать поведение различных версий браузера, но когда я исследовал это некоторое время назад, были некоторые довольно запутанные условия (которые, конечно, могут быть изменены с новыми версиями браузера), и я бы посоветовал Вам следует избегать этого, если это возможно!