2010-10-09 12 views
3

Je suis en train de soumettre un formulaire ajax, la forme elle-même est chargé par un événement ajaxpreventDefault ne fonctionne pas dans IE

Le code suivant fonctionne Jquery en chrome FF?. Dans IE, la soumission de formulaire n'est pas empêchée

$("#admin_main").delegate("#create_user_form", "submit", function (event) { 
    if (event.preventDefault) { 
     event.preventDefault(); 
    } else { 
     event.returnValue = false; 
    } 
    $.post('create_user', $("#create_user_form").serialize(), function (data) { 
     $("#admin_main").html(data); 
    }, "html"); 
}); 

Des solutions de contournement?

+0

Je crains que vous ne puissiez avoir de sérieux problèmes avec ceci ... Une fois j'ai dû empêcher le comportement par défaut de l'événement onkeyup. Et cela n'a pas fonctionné dans IE. Je n'ai jamais trouvé de solution (c'était en JavaScript pur). – rhino

Répondre

2

jQuery normalise, vous pouvez sûrement appeler .preventDefault(), comme ceci:

$("#admin_main").delegate("#create_user_form", "submit", function (event) { 
    event.preventDefault(); 
    $.post('create_user', $("#create_user_form").serialize(), function (data) { 
    $("#admin_main").html(data); 
    }, "html"); 
}); 

Ou si vous voulez tuer complètement l'événement, return false:

$("#admin_main").delegate("#create_user_form", "submit", function() { 
    $.post('create_user', $("#create_user_form").serialize(), function (data) { 
    $("#admin_main").html(data); 
    }, "html"); 
    return false; 
}); 

La raison pour laquelle ce n'est pas une question de l'appel est parce que ce n'est pas un objet d'événement spécifique au navigateur que vous avez affaire, c'est un jQuery event object qui a un comportement normalisé.

+0

Salut, j'ai déjà essayé, ça ne marche pas. Le code ci-dessus est supposé fonctionner –

+1

@RisingSun - Vous avez un autre problème alors, ce n'est pas le code ci-dessus ... par exemple un balisage invalide, ou une erreur JS avant que cela ne bombe et que le comportement normal du navigateur prenne ... ne pas voir une erreur dans la barre d'état? –

+0

Eh bien, même retourner faux; n'empêche pas la soumission de formulaire. –