2010-11-16 10 views
2

Est-il sécuritaire - dans un gestionnaire d'événement de soumission pour un formulaire - de soumettre un autre formulaire et de renvoyer false pour empêcher la soumission du premier formulaire? J'utilise cette approche, et cela fonctionne (au moins dans IE6). Cependant, je crains que cela ne fonctionne pas dans d'autres navigateurs. Pourrait l'appel à submit annuler le return false en quelque sorte?Prévenir une soumission de formulaire et en soumettre une autre - cette approche est-elle fiable?

L'approche alternative que je considérais est

$("#form1").submit(function() { 
    setTimeout('$("#form2").submit();', 10); 
    return false; 
}); 

.... mais cela pourrait bien être là où il n'accroître la complexité est réellement nécessaire.

La raison de ce besoin est que l'utilisateur soumet form1, mais dans un certain scénario (que je peux détecter en utilisant JavaScript) cela provoque un bug, qui peut être rectifié à la place en plaçant certaines données dans l'un des form2 champs, puis en soumettant ce formulaire à la place.

+1

Que faire si Javascript est désactivé? – spender

+0

Si JavaScript est désactivé, l'utilisateur ne peut pas utiliser ce site web de toute façon. –

Répondre

3

Votre code devrait fonctionner sur tous les navigateurs, mais si vous voulez être absolument certain que vous pourriez faire

$("#form1").submit(function(evt) { 
    evt.preventDefault(); // cancel the default behavior 
    $("#form2").submit(); 
    return false; 
}); 

En utilisant la méthode .preventDefault() assure que vous annulez le comportement par défaut avant faire quelque chose qui pourrait interférer avec

+0

'return false' fait que jQuery fait la partie' .preventDefault() '. – jwueller

+1

@elusive, je sais. Mais le PO est inquiet si le soumettre qui se produit avant le «retour faux», pourrait d'une manière ou d'une autre interférer avec cela. Ca ne peut pas **, mais je pointe juste vers une alternative qui rassure (* j'espère *) –

1

Votre approche originale devrait fonctionner partout.