ОК, похоже, что некоторые вводящие в заблуждение ответы, поэтому я попытаюсь дать объяснение. Обозначение <element onsubmit="handler_body">
переводится в нечто вроде:
element.onsubmit = function (event) {
with (document) {
with (this) {
handler_body
}
}
};
(Мы проигнорируем материал, связанный с with
, здесь это не важно.) Теперь рассмотрим функцию validateForm()
, возвращающую false
. Если вы используете onsubmit="return validateForm()"
, что впоследствии превращается, очевидно, в onsubmit="return false"
, ваш обработчик станет
element.onsubmit = function () {
return false;
};
Когда срабатывает событие submit
(это похоже на внутренний вызов браузера element.onsubmit()
), element.onsubmit()
возвращает false
и, таким образом, значение по умолчанию подавляется.
Однако, если вы просто используете onsubmit="validateForm();"
, обработчик событий будет выглядеть как
element.onsubmit = function () {
false;
};
В этом случае false
- это просто утверждение. element.onsubmit()
ничего не возвращает, а возврата undefined
из обработчика событий недостаточно для предотвращения поведения по умолчанию.
@ Симеон сказал, что «Возвращение в HTML не нужно». , но на самом деле он также использует return false
в своем коде.