Éviter un Défaut sur la Soumettre le Formulaire jQuery
Ce qui est mal à cela?
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();
});
- Fonctionne très bien ici. Vous pouvez poster plus d'informations dans votre question? Si vous
alert()
dans le gestionnaire de soumission fait-il appelé? Si non, alors il pourrait être qu'il y a une erreur dans votre script, c'est d'empêcher le gestionnaire d'événement d'être câblé correctement. Rien dans la console d'erreur? - Que le lien est interne et d'aucune utilité pour nous.
- Peut-être une version plus ancienne a été mis en cache. Semble fonctionner maintenant.
- double possible de event.preventDefault() vs return false
- ! Assurez-vous que le code javascript s'exécute après le DOM est prêt.
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
e.preventDefault()
fonctionne très bien avec la soumission d'un formulaire, le problème se situe ailleurs, dans le cas des OP code. À l'aide dereturn false
pourrait entraîner des conséquences involontaires.Utiliser le nouveau "sur" l'événement de la syntaxe.
Citer: https://api.jquery.com/on/
$(document).ready()
) Comment puis-je le faire fonctionner?true
oufalse
? Pouvez-vous recréer votre code dans jsfiddle.net et envoyer le lien? Essayez d'ajouter unealert()
pour confirmer que la fonction de tir. Certaines personnes ont signalé que l'ajout dee.stopPropagation();
aprèse.preventDefault();
arrête autres enchaîné les événements de tir.$('#myFormID').validationEngine('validate')
à partir de jQuery validationEngine en tant que variablevalid
, pour vérifier si l'entrée est une adresse e-mail valide. Néanmoins, je tiens à prévenir le comportement par défaut de toute façon; nepreventDefault
doivent être à l'intérieur du bloc si, pas avant?preventDefault
est à l'intérieur de la si non valide bloc pour arrêter la soumission du formulaire. En d'autres termes, si valide, utilisez le formulaire par défaut.Je crois que les réponses ci-dessus est tout à fait correct, mais ce n'est pas le point pourquoi le
submit
méthode ne fonctionne pas.Bien, le
submit
méthode ne fonctionnera pas si jQuery ne pouvez pas obtenir leform
élément, et jQuery ne donne pas d'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. Donc,$(document).ready(function () { //your code here //});
permettra de résoudre le problème.La meilleure pratique est, toujours mettre votre script dans le bas du document.
C'est une question très ancienne, mais de la a accepté de répondre ici n'a pas vraiment d'obtenir à la racine du problème.
Vous pouvez résoudre ce problème de deux façons. D'abord avec jQuery:
Ou sans jQuery:
Vous n'avez pas besoin d'utiliser
return false
pour résoudre ce problème.Votre Code est bien juste que vous devez le placer à l'intérieur de la fonction ready.
Vous pouvez également essayer ce code, si vous avez par exemple plus tard ajouté des formes dynamiques. Par exemple vous avez chargé une fenêtre asynchrone avec l'ajax et souhaitez soumettre ce formulaire.
Cas 1, version statique: Si vous avez seulement quelques auditeurs et votre forme de la poignée est codé en dur, vous pouvez les écouter directement sur le document "niveau". Je ne voudrais pas utiliser les écouteurs sur le document, mais je voudrais essayer d'aller plus loin dans la mort de l'arbre, car il pourrait conduire à des problèmes de performances (dépend de la taille de votre site et votre contenu)
OU
OU
OU
.live()
est obsolète depuis jQuery 1.7 et supprimée depuis la 1.9. Utilisation.on()
à la place.Bonjour a cherché une solution pour faire de l'Ajax formulaire de travailler avec Google Tag Manager (GTM), le return false empêché l'achèvement et de la soumettre à l'activation de l'événement en temps réel sur google analytics solution a été de changer le return false par courriel.preventDefault (); qui fonctionnait correctement suit le code: