Я пытаюсь перехватить все виды отправки формы для определенной формы на веб-странице. С jQuery это выглядит очень просто: form.submit (function (e) {…})
, и он прекрасно работает, если я нажимаю кнопку «Отправить».
Однако есть также свойство onChange в поле выбора, которое выполняет this.form.submit ()
, и похоже, что этот вызов обходит мой слушатель (в Chromium / Firefox):
<script type="text/javascript">
function submitForm(e) {
window.alert('submitted');
e.preventDefault();
return false;
}
$(document).ready(function() {
$('#bar').submit(submitForm);
});
</script>
<form id="bar">
<select name="name" onChange="this.form.submit()">
<option>Foo</option>
<option>Bar</option>
</select>
<br/>
<input type="submit"/>
</form>
Очевидно, в приведенный выше код, я мог бы просто изменить this.form.submit ()
на конкретную ссылку моего прослушивателя отправки. Однако в моем реальном приложении это не так просто, поэтому я ищу способ, где мне не нужно изменять свойство onChange.
Если бы я не совершил глупую ошибку, но это действительно ожидаемое поведение браузера, я был бы очень рад, если бы вы могли объяснить поток событий и почему это приводит к симптомам, описанным выше.