2010-11-23 4 views
0

J'ai plusieurs formulaires dans mon site Web qui ont chacun le bouton de soumission en tant que href.
tous mes A sont pris par jQuery
$("a").live("click", function() {

dans cette zone il y a une déclaration de grande interrupteur en fonction de l'identifiant des différentes actions une sera prise. Pour tous les ID formulaireSubmit, le parent est récupéré.
case "formSubmit": a.parents("form:first").submit();
je veux attraper toutes les formes, donc j'essayer cette ...
$("form").live("submit", function() { Formulaire jQuery soumettant

Mais quand j'exécute, je le tester avec mettre les formes l'action comme certains d'alerte pour que je sais si son exécuter sa propre action ou je l'outrepasse. Je ne l'ignore pas. Le formulaire est également ajouté dynamiquement avec jQuery faisant un appel $ .post, puis en prenant la sortie et en remplissant la zone de contenu principal.

Si j'utilise ...
$("form").submit(function() {
Les formulaires ne seront pas capturées soit. Pas les formulaires qui ont été lors de la création du document ou ceux qui ont été ajoutés pendant le temps des utilisateurs sur le site. Des suggestions? (J'ai dû modifier à cause des compétences en anglais super pauvres!).

Répondre

1

Le .submit() de jQuery déclenche simplement l'événement de soumission. Pour soumettre effectivement la forme, vous voulez .submit() de DOM:

a.parents("form:first")[0].submit(); 

Side note: utiliser .closest("form") plutôt que .parents("form:first")

+0

Pourquoi les plus proches plutôt que les parents? Et laissez-moi tester votre solution! – Michael

+0

après avoir essayé 'var form = a.closest (" form "); form [0] .submit(); 'et '$ (" form "). Live (" submit ", function() {' ou '$ (" form "). Submit (function() {' Le formulaire est – Michael

+0

Ok, j'ai mal compris votre problème, je pense que ce que vous voulez est d'empêcher l'action par défaut du navigateur de se produire. vous devez renvoyer false depuis le gestionnaire d'événements La raison pour laquelle .live() ne fonctionne pas est que live fonctionne en gérant l'événement une fois qu'il a atteint le niveau du document, ce qui est trop tard. utilisez .submit(), mais reliez-le à chaque formulaire ajouté.L'autre alternative consiste à utiliser un plugin jQuery appelé livequery, mais évitez-le si vous le pouvez. –

Questions connexes