J'ai un formulaire qui, une fois soumis, je dois effectuer un traitement supplémentaire avant de pouvoir le soumettre. Je peux empêcher le comportement de soumission de formulaire par défaut, puis effectuer mon traitement supplémentaire (il s'agit essentiellement d'appeler l'API Google Maps et d'ajouter quelques champs masqués au formulaire) - puis j'ai besoin du formulaire pour le soumettre.
Existe-t-il un moyen "d'empêcher la valeur par défaut", puis un peu plus tard "continuer par défaut?"
javascript
jquery
StackOverflowNewbie
la source
la source
Réponses:
Lorsque vous liez l'
.submit()
événement au formulaire et que vous faites les choses que vous voulez faire avant de retourner (vrai), ces choses se produisent avant la soumission réelle.Par exemple:
Exemple simple
Un autre exemple sur jquery.com: http://api.jquery.com/submit/#entry-examples
la source
Utilisation
jQuery.one()
L'utilisation de
one
prevent également une boucle infinie car cetsubmit
événement personnalisé est détaché après la première soumission.la source
Je ferais juste:
Appelez d'
preventDefault
abord et utilisez lasubmit()
fonction plus tard, si vous avez juste besoin de soumettre le formulairela source
En utilisant cette méthode, vous ferez une boucle sans fin sur votre JS. pour mieux faire, vous pouvez utiliser les éléments suivants
J'espère que ça aide! Merci!
la source
C'est, à mon humble avis, la solution la plus générique et la plus robuste (si vos actions sont déclenchées par l'utilisateur, par exemple «l'utilisateur clique sur un bouton»):
A titre d'exemple, notez cette solution élégante pour ajouter "Êtes-vous sûr?" popup à n'importe quel bouton simplement en décorant un bouton avec un attribut. Nous continuerons conditionnellement le comportement par défaut si l'utilisateur ne se désiste pas.
1. Ajoutons à chaque bouton que nous voulons une fenêtre contextuelle "êtes-vous sûr" un texte d'avertissement:
2. Attachez des gestionnaires à TOUS ces boutons:
C'est tout.
la source
la source
Avec
jQuery
et une petite variation de la réponse de @ Joepreludian ci-dessus:Points importants à garder à l'esprit:
.one(...)
plutôt sur.on(...) or .submit(...)
named
fonction au lieu deanonymous function
puisque nous le référencerons dans lecallback
.Vous pouvez modifier la valeur de la
allIsWell
variable dans l'extrait ci-dessous entrue
oufalse
pour tester la fonctionnalité:Bonne chance...
la source
De manière purement Javascript, vous pouvez soumettre le formulaire après avoir empêché le défaut.
C'est parce que
HTMLFormElement.submit()
n'appelle jamais leonSubmit()
. Nous nous appuyons donc sur cette bizarrerie de spécification pour soumettre le formulaire comme s'il n'avait pas de gestionnaire onsubmit personnalisé ici.Voir ce violon pour une requête synchrone.
Attendre la fin d'une requête asynchrone est tout aussi simple:
Vous pouvez consulter mon violon pour un exemple de requête asynchrone.
Et si vous n'avez pas de promesses:
Et voici cette demande .
la source
Vous pouvez utiliser
e.preventDefault()
ce qui arrêtera l'opération en cours.que tu peux faire
$("#form").submit();
la source
"Injection de validation sans boucle d'envoi":
Je veux juste vérifier reCaptcha et d'autres choses avant la validation HTML5, alors j'ai fait quelque chose comme ça (la fonction de validation renvoie vrai ou faux):
la source