Подтвердить что ты не робот

JQuery event.preventDefault() не работает в Firefox (включен JSFiddle)

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

Здесь JSFiddle вы можете увидеть код с помощью: http://jsfiddle.net/SeEw2/2/

В принципе, нажмите кнопку "Отправить".

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

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

Итак, почему перезагрузка страницы в Firefox, а не в Chrome? Я был Firebugging, и никаких ошибок не возникало ни в...

4b9b3361

Ответ 1

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

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

extract:

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

        // Stop the Search input reloading the page by preventing its default action
        event.preventDefault();

Ответ 2

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

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

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

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

Ответ 3

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

Ответ 4

Вместо того, чтобы искать событие click на кнопке submit, почему бы не использовать $(form).submit handler?

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

Ответ 5

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

<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 code:

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

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