web-dev-qa-db-fra.com

jQuery event.preventDefault () ne fonctionne pas dans Firefox (JSFiddle inclus)

C'est une sorte de doublon similaire à d'autres ici, mais je pense que j'utilise event.preventDefault() correctement dans ce cas.

Voici un JSFiddle avec lequel vous pouvez voir le code: http://jsfiddle.net/SeEw2/2/

Fondamentalement, cliquez sur le bouton Soumettre.

Dans Chrome: Rien ne se passe - réponse correcte.

Dans Firefox : Rechargement de page, oh non!

Alors, pourquoi la page se recharge-t-elle dans Firefox et non dans Chrome? Je l'ai fait Firebugging et aucune erreur n'est survenue non plus ...

49
Jack

La variable event dans votre code n'est pas initialisée.

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

extrait :

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

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

Ah j'ai eu un problème similaire dans ce passé. Plutôt que event.preventDefault (), essayez de transmettre l'événement à:

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

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

Je sais que ça dit IE, mais je n'ai jamais eu de problème avec ça depuis =]

9
Dartoxian

Je l'ai résolu de cette façon, car mon code est un peu différent, cela peut être utile pour d'autres personnes. Mon code initial ressemblait à ceci.

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

Ma fonction js ressemblait

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

J'ai dû passer l'événement de paramètre dans l'appel de fonction et le recevoir dans la fonction .

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

code js:

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

J'espère que ça aide.

1
Andres Ramos

Parce que vous ne passez pas l'objet événement comme function(event), mais ma question est pourquoi même passer par tout cela quand vous pouvez faire le type="button" et onclick passer les valeurs? C'est essentiellement ce que vous faites avec tout ce processus.

1
Babiker

Au lieu de rechercher un événement de clic sur le bouton d'envoi, pourquoi ne pas utiliser le gestionnaire $ (form) .submit ?

Tant que vous avez "return false" à la fin du gestionnaire, la page ne se rechargera pas.

1
CamelBlues