169 votes

Comment puis-je empêcher le rafraîchissement de la page lorsque le bouton à l'intérieur du formulaire est cliqué?

J'ai un problème en utilisant des boutons à l'intérieur d'un formulaire. Je veux que ce bouton appelle une fonction. Il le fait, mais avec un résultat indésirable qui actualise la page.

Mon code simple ressemble à ceci

    Cliquez

En cliquant sur le bouton, la fonction est appelée avec un rafraîchissement de la page, ce qui réinitialise toutes mes requêtes précédentes et affecte la page actuelle qui était le résultat de la requête précédente.

Que dois-je faire pour éviter le rafraîchissement de la page?

0 votes

Vous devez spécifier les paramètres, si vous utilisez simplement window.location = window.location.href; cela rafraîchira toute la page et réinitialisera toutes vos demandes précédentes. Veuillez vérifier ceci : stackoverflow.com/questions/133925/…

0 votes

0 votes

@bunkdeath: L'article réponses devrait être accepté.

396voto

detale Points 2047

Ajoutez type="button" au bouton.

Click

La valeur par défaut de type pour un bouton est submit, ce qui soumet automatiquement le formulaire dans votre cas et le fait ressembler à un rafraîchissement.

10 votes

Réponse parfaite donnée ici

3 votes

Sauf que cela empêche la validation de formulaire HTML5 (comme pour la saisie de type "email").

3 votes

Vous pouvez également ajouter return false; à l'onclick : onclick="getData(); return false;"

88voto

JNDPNT Points 3496

Laissez getData() renvoyer false. Cela va résoudre le problème.

    Cliquez

2 votes

En effet. La fonction onclick doit renvoyer false, pas getData.

1 votes

C'est ce que je voulais dire, mais d'accord, j'ai modifié la réponse pour qu'elle soit plus claire.

8 votes

Vous n'avez pas besoin de modifier la fonction - vous pouvez simplement utiliser onclick="getData(); return false;"

22voto

James Allardice Points 81162

Le problème est qu'il déclenche la soumission du formulaire. Si vous faites en sorte que la fonction getData return false, alors le formulaire devrait cesser de se soumettre.

Alternativement, vous pourriez également utiliser la méthode preventDefault de l'objet événement :

function getData(e) {
    e.preventDefault();
}

0 votes

L'événement de clic qui sera transmis.

0 votes

Sauf que (sans autres modifications), l'objet event ne sera pas transmis.

0 votes

Cliquez

10voto

Mehdiway Points 571

HTML

jQuery

$('#myForm').submit(function() {
    faireQuelquechose();
});

0 votes

$('.myForm') devrait être $('#myForm')

3voto

Manik Sood Points 1

au lieu d'utiliser la balise bouton, utilisez la balise input. Comme ceci,

0 votes

Mais cela n'a pas créé de bouton comme le bouton type='button'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X