Как перехватить форму надежно представляет?

StackOverflow https://stackoverflow.com/questions/3957696

  •  08-10-2019
  •  | 
  •  

Вопрос

Я пытаюсь перехватить все виды представлений формы для формы 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 Действие по форме будет уволена, и форма будет представлена.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top