30 votes

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

Je veux soumettre un avec jquery comme ci-dessous;

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

Son fonctionnement parfait dans tous les navigateurs sauf IE6.

Comment le faire fonctionner dans IE6 ??

64voto

I.devries Points 3788

Vous avez probablement une <input name="submit" /> quelque part dans votre formulaire, qui remplace la fonction "envoyer" du formulaire dans IE.

Edit:

Je l'ai testé dans certains autres navigateurs. Les dernières versions de tous les navigateurs principaux semblent être affectés par ce problème.

  • IE - toutes les versions
  • Firefox 4+
  • Chrome au moins depuis la version 12
  • De l'opéra au moins depuis la version 11

Bas de ligne: ne Jamais mettre le nom de votre intrants "soumettre", ou tout autre défaut de la propriété ou de la méthode de l'élément de formulaire (par exemple, "action" ou "reset") . Voir MDC pour un aperçu complet.

3voto

Ben Alpert Points 30381

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

2voto

Tommy W Points 309

J'ai récemment eu un problème similaire, où j'ai été la création d'un "pseudo-forme" au sein d'une ASP.NET serveur de formulaire (donc je ne pouvais pas utiliser un autre tag form), que je voulais poster à un autre domaine, sans avoir à écrire de code côté serveur pour faire le poste distant. La réponse est facile - créer un formulaire à la volée et de le soumettre. Fonctionne dans de bonnes navigateurs...

Après quelques essais et les tribulations, j'ai réalisé que IE ne fonctionne pas comme prévu (quelle surprise), à moins que le formulaire est soumis a été ajouté à DOM. Alors, c'était ma solution. J'espère que cela aidera certains d'entre vous. S'il vous plaît être conscient, toutes mes entrées et mes soumettre étaient dans le même conteneur. ".après pour" se cache une entré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, il fonctionne un régal.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X