Форма onsubmit напротив кнопки отправки onclick

UPDATE Из @BrendanEich  

@mplungjan onclick submit просто выпадает из этой кнопки; форма onsubmit явно лучше.


Какими были бы причины использовать кнопку onclick кнопки отправки, чтобы определить, следует ли отправлять форму?

Я уверен, что

  • выполнить что-то перед отправкой и отменить отправку в случае ошибки, форма onsubmit-событие является очевидным местом для его размещения.
  • Если вы используете onclick кнопки submit, а затем решили использовать type = "image", обработчик события будет терпеть неудачу во многих браузерах
  • если вы измените отправку на кнопку, вам также придется добавить submit в обработчик события onclick.

Я ищу сильные причины предпочесть использовать кнопку отправки onclick по форме onsubmit.

ОБНОВЛЕНИЕ: Пожалуйста, не то, что я лично хорошо осведомлен о многих проблемах, связанных с отправкой и проверкой формы.
Например, если представление javascript не будет инициировать onsubmit http://jsfiddle.net/mplungjan/3A4Ha/

<form onsubmit="alert('onSubmit called')">
    <input type="text" value="This will submit on enter but in IE the onclick is not triggered" style="width:100%"/><br/>
    <input type="submit" onclick="alert('Clicked')" />
</form><br />
<a href="#" onclick="alert('Submitting by script'); return false">Submit by script will not trigger onsubmit</a>

Кроме того, IE не будет запускать onclick, если вы нажмете enter в форме в моей скрипке


История:

Пришла в обсуждение здесь

кнопка html не доступна без отключения

Я испытываю сильную неприязнь к тому, что я использовал кнопку отправки для НИЧЕГО из-за многих 1 лет, когда это не работает в ряде браузеров, в основном старше версия IE. Я перечислил некоторые из очевидных причин, но я уверен, что они не убедят закаленного пользователя.

Может ли сообщество SO помочь мне прибить это к стене, как будто они прибили w3schools? Также не стесняйтесь давать комментарии относительно того, как я могу сформулировать этот вопрос приемлемым образом.


1: со времен NS2.x и IE3.02

Ответ 1

Форма onsubmit - это более правильный подход по той простой причине, что форму можно также отправить с помощью клавиши <ENTER>, а не просто нажав кнопку отправки.