jQuery event.preventDefault () не работает в Firefox (включая JSFiddle) - PullRequest
49 голосов
/ 03 января 2011

Это своего рода дубликат с некоторыми другими здесь, но я думаю, что я правильно использую event.preventDefault() в этом случае.

Вот JSFiddle, вы можете увидеть код с: http://jsfiddle.net/SeEw2/2/

По сути, нажмите кнопку Отправить.

В Chrome: Ничего не происходит - правильный ответ.

В Firefox : перезагрузка страницыО, нет!

Так почему страница перезагружается в Firefox, а не в Chrome?Я поджигал его, и ни одной ошибки не возникало ...

Ответы [ 5 ]

98 голосов
/ 03 января 2011

Переменная event в вашем коде не инициализирована.

http://jsfiddle.net/SeEw2/4/

извлечение:

 $('#ajaxsearch').click(function(event) {

        // Stop the Search input reloading the page by preventing its default action
        event.preventDefault();
9 голосов
/ 03 января 2011

Ах, у меня была похожая проблема в прошлом.Вместо event.preventDefault () попробуйте передать событие:

    function ie8SafePreventEvent(e){
    if(e.preventDefault){ e.preventDefault()}
    else{e.stop()};

    e.returnValue = false;
    e.stopPropagation();        
}

Я знаю, что оно говорит IE, но у меня никогда не было проблем с ним, так как =]

1 голос
/ 19 октября 2016

Я решил это так, потому что мой код немного отличается, это может быть полезно для других людей. Мой исходный код выглядел так:

<form id="enrollstudentform" onsubmit="return enrollStudents()">
    ...
</form>

Моя функция js выглядела как

function enrollStudents() {
    // Stop Form.
    event.preventDefault();
    // Other code
}

Мне пришлось передать событие параметра в вызов функции и получить его в функции .

<form id="enrollstudentform" onsubmit="return enrollStudents(event)">
    ...
</form>

JS код:

function enrollStudents(event) {
    // Stop Form.
    event.preventDefault();
    // Other code
}

Надеюсь, это поможет.

1 голос
/ 03 января 2011

Вместо того, чтобы искать событие нажатия на кнопку отправки, почему бы не использовать обработчик $ (форма) .submit ?

До тех пор, пока у вас есть 'return false' вконец обработчика, страница не будет перезагружаться.

1 голос
/ 03 января 2011

Поскольку вы не передаете объект события, такой как function(event), но мой вопрос заключается в том, зачем вообще проходить через все это, когда вы можете сделать type="button" и нажать кнопку onclick для передачи значений? По сути это то, что вы делаете со всем этим процессом.

...