Как перехватить форму надежно представляет?
Вопрос
Я пытаюсь перехватить все виды представлений формы для формы SpeciFC на веб-странице. Это выглядит очень просто с jQuery: form.submit(function(e) {…})
И это прекрасно работает, если я нажму кнопку отправки.
Однако есть также свойство Onchange на поле выбора, который делает this.form.submit()
И похоже, что этот звонок поощряет мой слушатель (в хроме / 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.
Если бы я не сделал глупую ошибку, но это на самом деле ожидаемое поведение браузера, я был бы очень рад, если бы вы могли объяснить поток событий и почему это приводит к симптомам, описанным выше.
Решение
Призыв form.submit()
Метод не вызывает submit
событие, как правило, например, установить value
текстового поля не вызывает его change
мероприятие. Попробуйте вызвать submit
Событие через jQuery вместо этого:
<form id="bar">
<select name="name" onChange="$('#bar').submit();">
<option>Foo</option>
<option>Bar</option>
</select>
<br/>
<input type="submit"/>
</form>
Согласно документация, по умолчанию submit
Действие по форме будет уволена, и форма будет представлена.