web-dev-qa-db-fra.com

le formulaire jQuery submit () ne fonctionne pas dans IE6?

Je veux soumettre un avec using jquery comme ci-dessous;

$("#formid").submit();

Son fonctionnement est parfait dans tous les navigateurs sauf IE6.

Comment le faire fonctionner dans IE6?

29
Prashant

Vous avez probablement un <input name="submit" /> quelque part dans votre formulaire, qui écrase la fonction "submit" du formulaire dans IE.

Modifier:  

J'ai testé dans d'autres navigateurs. Les dernières versions de tous les principaux navigateurs semblent être concernées par ce problème.

  • IE - toutes les versions
  • Firefox 4+
  • Chrome au moins depuis la version 12
  • Opera au moins depuis la version 11

Ligne de fond: ne nommez jamais vos entrées "submit", ni aucune autre propriété ou méthode par défaut de l'élément de formulaire (par exemple, "action" ou "reset"). Voir MDC pour un aperçu complet.

63
I.devries

J'ai eu un problème similaire quand j'étais sur le point de soumettre le formulaire via un élément A. J'avais défini l'attribut href sur "javascript :;" laisser le script principal jQuery gérer la soumission mais cela ne fonctionnerait pas dans IE6.

le script principal de jQuery:

$(".submitLink").click(function(){
$(this).parent()[0].submit();
$(this).addClass("loading");
});

Ma solution était de changer l'attribut href de "javascript :;" à "#".

14
Kim

Vous pouvez essayer $("#formid").trigger("submit"), bien que je doute que cela vous donnera un résultat différent.

3
Sophie Alpert

J'ai récemment eu un problème similaire: je créais un "pseudo-formulaire" dans un formulaire de serveur ASP.NET (je ne pouvais donc pas utiliser une autre balise de formulaire), que je souhaitais envoyer dans un autre domaine sans avoir à écrire. code côté serveur pour faire le post distant. Réponse facile - créez un formulaire à la volée et envoyez-le. Fonctionne dans les bons navigateurs ...

Après quelques essais et tribulations, je me suis rendu compte que IE ne fonctionnerait pas comme prévu (quelle surprise) à moins que le formulaire soumis ait été ajouté à DOM. Donc, c'était ma solution. J'espère que cela aide certains d'entre vous. S'il vous plaît soyez conscient, toutes mes entrées et ma soumission étaient dans le même conteneur. ".post-to" est une entrée cachée avec l'URL.

$(".post-form").click(function(ev) {

    var postto = $(this).siblings(".post-to").val();    
    var form = document.createElement("form")
    $(form).attr("id", "reg-form").attr("name", "reg-form").attr("action", postto).attr("method", "post").attr("enctype", "multipart/form-data");

    $(this).siblings("input:text").each(function() {
        $(form).append($(this).clone());
    });

    document.body.appendChild(form);
    form.submit();
    document.body.removeChild(form);

    return false;
});

Finalement, cela fonctionne un régal.

2
Tommy W

N'oubliez pas de retourner false. si vous êtes sur une étiquette

1
Simon

Ajoutez une button dans votre formulaire avec type="submit"

Référence .

0
Leif Gruenwoldt