Quel est le problème avec ça?
HTML:
<form action="http://localhost:8888/bevbros/index.php/test" method="post" accept-charset="utf-8" id="cpa-form" class="forms">
<input type="text" name="zip" value="Zip code" id="Zip" class="required valid">
<input type="submit" name="Next" value="Submit" class="forms" id="1">
</form>
jQuery:
$("#cpa-form").submit(function(e){
e.preventDefault();
});
jquery
preventdefault
Djreed
la source
la source
alert()
dans le gestionnaire de soumission, est-ce qu'il est appelé? Sinon, il se peut qu'il y ait une erreur dans votre script qui empêche le gestionnaire d'événements d'être correctement câblé. Quelque chose dans la console d'erreur?Réponses:
Essaye ça:
la source
e.preventDefault()
fonctionne bien avec une soumission de formulaire, le problème résidait ailleurs dans le code de l'OP. L'utilisationreturn false
pourrait entraîner des conséquences inattendues.Utilisez la nouvelle syntaxe d'événement «on».
Citer: https://api.jquery.com/on/
la source
$(document).ready()
) Comment le faire fonctionner?true
oufalse
? Pouvez-vous recréer votre code dans jsfiddle.net et envoyer le lien? Essayez d'ajouter unalert()
pour confirmer que la fonction se déclenche. Certaines personnes ont signalé que l'ajoute.stopPropagation();
aprèse.preventDefault();
arrête le déclenchement d'autres événements enchaînés.$('#myFormID').validationEngine('validate')
depuis jQuery validationEngine comme variablevalid
, pour vérifier si l'entrée est une adresse e-mail valide. Néanmoins, je veux qu'il empêche le comportement par défaut de toute façon; doitpreventDefault
être à l'intérieur du bloc if, pas avant?preventDefault
trouve à l'intérieur du bloc sinon valide pour arrêter la soumission du formulaire. En d'autres termes, s'il est valide , utilisez le comportement par défaut du formulaire.Je crois que les réponses ci-dessus sont toutes correctes, mais cela ne montre pas pourquoi la
submit
méthode ne fonctionne pas.Eh bien, la
submit
méthode ne fonctionnera pas si jQuery ne peut pas obtenir l'form
élément, et jQuery ne donne aucune erreur à ce sujet. Si votre script est placé dans l'en-tête du document, assurez-vous que le code s'exécute aprèsDOM
est prêt . Alors,$(document).ready(function () { // your code here // });
résoudra le problème.La meilleure pratique est de toujours mettre votre script au bas du document.
la source
C'est une question ancienne, mais la réponse acceptée ici ne va pas vraiment à la racine du problème.
Vous pouvez résoudre cela de deux manières. Tout d'abord avec jQuery:
Ou sans jQuery:
Vous n'avez pas besoin d'utiliser
return false
pour résoudre ce problème.la source
la source
la source
Votre code est parfait, il vous suffit de le placer dans la fonction prête.
la source
Vous pouvez également essayer ce code, si vous avez par exemple ajouté des formulaires dynamiques ultérieurement. Par exemple, vous avez chargé une fenêtre asynchrone avec ajax et souhaitez soumettre ce formulaire.
Cas 1, version statique: Si vous n'avez que quelques écouteurs et que votre formulaire à gérer est codé en dur, alors vous pouvez écouter directement au «niveau document». Je n'utiliserais pas les écouteurs au niveau du document mais j'essaierais d'aller plus loin dans l'arbre du destin car cela pourrait entraîner des problèmes de performances (cela dépend de la taille de votre site Web et de votre contenu)
OU
OU
OU
la source
.live()
est obsolète depuis jQuery 1.7 et supprimé depuis la 1.9. Utilisez.on()
plutôt.Bonjour cherchait une solution pour faire fonctionner un formulaire Ajax avec Google Tag Manager (GTM), le retour false empêchait l'achèvement et soumettait l'activation de l'événement en temps réel sur la solution google analytics était de modifier le retour false par e.preventDefault () ; qui a fonctionné correctement suit le code:
la source
e.preventDefault () ne fonctionne bien que si vous n'avez pas de problème sur vos javascripts, vérifiez vos javascripts si e.preventDefault () ne fonctionne pas, il y a des chances que d'autres parties de votre JS ne fonctionnent pas aussi
la source
Eh bien, j'ai rencontré un problème similaire. Le problème pour moi est que le fichier JS est chargé avant le rendu DOM. Alors déplacez-vous
<script>
à la fin de<body>
balise.ou utilisez différer.
alors soyez assuré que cela
e.preventDefault()
devrait fonctionner.la source