2011-07-19 3 views
2

J'ai une forme Drupal,Le formulaire Drupal continue d'être soumis même si la fonction submitQ de jQuery renvoie false;

<form action="/forms/contact.html" accept-charset="UTF-8" method="post" id="webform-client-form-1148-1" class="webform-client-form" enctype="multipart/form-data"> 

avec les éléments suivants soumettre,

<input type="submit" name="op" id="edit-submit-1" value="Submit" class="form-submit" /> 

La page contenant la forme charge la ligne jQuery suivante,

jQuery("#webform-client-form-1148-1").submit(function(){return false;}); 

Peu importe ce que j'essaie , le bouton Envoyer soumet toujours le formulaire. Puisque je retourne faux, je m'attends à ce que le formulaire ignore le processus de soumission et annule complètement.

Pourquoi le formulaire continue-t-il à être envoyé, même si 'return false' est retourné pour la fonction submit() du formulaire?

Ceci est un exemple simple que j'ai descendu dans mon code pour forcer soumettre sur le formulaire pour toujours retourner faux, et par conséquent, ne devrait jamais soumettre.

Répondre

3

J'ai répondu à une question similaire il n'y a pas longtemps. Vérification Stop form from submitting when searching with jQuery

La solution consiste à appliquer la méthode événementielle event.preventDefault(). Ne pas oublier de passer l'événement à travers la fonction.

par exemple.

jQuery("#webform-client-form-1148-1").submit(function(event){ 
    event.preventDefault(); 
}); 
+1

Basé de débogage et en suivant le chemin de code dans jQuery, invoquant « return false » doit appeler event.preventDefault en aval dans le code de base jQuery. Voici un lien vers un article en ligne qui aborde également ce sujet, http://css-tricks.com/6809-return-false-and-prevent-default/. –

+0

Bon point Mike! Ce lien mentionne ce qui suit, qui va dans plus de détails http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/, bonne lecture! –

1

supprimer input type="submit"

<input type="button" name="op" id="edit-submit-1" value="Submit" class="form-submit" /> 

et essayer ..

$('#edit-submit-1').click(function(){ 
     jQuery("#webform-client-form-1148-1").submit(function(){return false;}); 

}); 

si vous ne voulez pas soumettre votre formulaire tout, vous pouvez utiliser unbind() ou die()

vous peut également utiliser event.preventDefault(); pour empêcher l'action par défaut de l'envoi de formulaire. Espère que ces alternatives vous aident.

Questions connexes