J'ai un problème lors de l'utilisation des boutons à l'intérieur du formulaire. Je veux que ce bouton appelle la fonction. C'est le cas, mais avec un résultat indésirable, il actualise la page.
Mon code simple va comme ça
<form method="POST">
<button name="data" onclick="getData()">Click</button>
</form>
En cliquant sur le bouton, la fonction est appelée avec la page rafraîchie, ce qui réinitialise toute ma demande précédente qui affecte la page actuelle qui était le résultat de la demande précédente.
Que dois-je faire pour empêcher l'actualisation de la page?
javascript
html
couchette
la source
la source
Réponses:
Let
getData()
return false. Cela résoudra le problème.la source
onclick
fonction doit renvoyer false, nongetData
.type="button"
est vraiment le piège.Ajouter
type="button"
au bouton.La valeur par défaut de
type
pour un bouton estsubmit
, qui publie automatiquement le formulaire dans votre cas et le fait ressembler à une actualisation.la source
return false;
au onclick:onclick="getData(); return false;"
Tout ce que vous avez à faire est de mettre une balise de type et de créer le bouton de type.
Cela résout le problème
la source
Le problème est que cela déclenche la soumission du formulaire. Si vous créez la
getData
fonction,return false
cela devrait empêcher l'envoi du formulaire.Vous pouvez également utiliser la
preventDefault
méthode de l'objet événement:la source
HTML
jQuery
la source
au lieu d'utiliser la balise de bouton, utilisez la balise d'entrée. Comme ça,
la source
button type='button'
Si votre bouton est le "bouton" par défaut, assurez-vous que vous définissez explicitement l'attribut type, sinon le WebForm le traitera comme soumettre par défaut.
si vous utilisez js, faites comme ça
la source
Une méthode javascript pour désactiver le bouton lui-même
Une fois que tous les champs du formulaire ont satisfait vos critères, vous pouvez réactiver le bouton
Utiliser une Jquery sera quelque chose comme ça
la source
Pour une raison quelconque dans Firefox, même si j'ai
return false;
etmyform.preventDefault();
dans la fonction, il actualise la page après l'exécution de la fonction. Et je ne sais pas si c'est une bonne pratique, mais ça marche pour moi, j'insèrejavascript:this.preventDefault();
dans l'attribut action.Comme je l'ai dit, j'ai essayé toutes les autres suggestions et elles fonctionnent bien dans tous les navigateurs sauf Firefox, si vous rencontrez le même problème, essayez d'ajouter l'événement prevent dans l'attribut action
javascript:return false;
oujavascript:this.preventDefault();
. N'essayez pas avecjavascript:void(0);
qui cassera votre code. Ne me demandez pas pourquoi :-).Je ne pense pas que ce soit une manière élégante de le faire, mais dans mon cas, je n'avais pas d'autre choix.
Mettre à jour:
Si vous avez reçu une erreur ... après le traitement d'ajax, supprimez l'action d'attribut et dans l'
onsubmit
attribut, exécutez votre fonction suivie du faux retour:onsubmit="functionToRun(); return false;"
Je ne sais pas pourquoi tous ces problèmes avec Firefox, mais j'espère que cela fonctionne.
la source
La fonction de retour ne fonctionne pas dans tous les cas. J'ai essayé ceci:
Cela n'a pas fonctionné pour moi.
J'ai essayé de retourner false dans la fonction et cela a fonctionné pour moi.
la source
J'étais confronté au même problème. Le problème vient de la
onclick
fonction. Il ne devrait y avoir aucun problème avec la fonctiongetData
. Cela fonctionnait en rendant laonclick
fonction renvoyer false.la source
Celui-ci est la meilleure solution:
Remarque: mon code est très simple.
la source
Vous pouvez utiliser ajax et jquery pour résoudre ce problème:
la source