233 votes

JavaScript Form Submit - Boîte de dialogue de confirmation ou d'annulation de soumission

Pour un simple formulaire avec une alerte qui demande si les champs ont été remplis correctement, j'ai besoin d'une fonction qui fasse ceci :

  • Affiche une boîte d'alerte lorsque le bouton est cliqué avec deux options :

    • Si vous cliquez sur "OK", le formulaire est soumis.
    • Si vous cliquez sur "Annuler", la boîte d'alerte se ferme et le formulaire peut être modifié et soumis à nouveau.

Je pense qu'une confirmation JavaScript pourrait fonctionner mais je n'arrive pas à trouver comment.

Le code que j'ai maintenant est :

function show_alert() {
  alert("xxxxxx");
}

<form>
  <input type="image" src="xxx" border="0" name="submit" onclick="show_alert();" alt="PayPal - The safer, easier way to pay online!" value="Submit">
</form>

496voto

Samuel Liew Points 17275

Un simple confirmer JavaScript en ligne suffirait :

<form onsubmit="return confirm('Do you really want to submit the form?');">

Pas besoin d'un fonction externe à moins que vous ne fassiez validation ce que vous pouvez faire comme ceci :

<script>
function validate(form) {

    // validation code here ...

    if(!valid) {
        alert('Please correct the errors in the form!');
        return false;
    }
    else {
        return confirm('Do you really want to submit the form?');
    }
}
</script>
<form onsubmit="return validate(this);">

6 votes

Pour clarifier, la validation côté client (en JavaScript) ne doit être considérée que comme une commodité pour l'utilisateur. Le code JavaScript est librement modifiable par l'utilisateur et on ne devrait pas lui faire confiance. Le site réel La validation doit toujours être effectuée en back-end pour éviter que des données malformées ou malveillantes n'atteignent votre base de données ou votre serveur.

2 votes

D'une manière ou d'une autre, même si je sélectionne l'annulation, l'envoi se poursuit (Chrome 86).

1 votes

@Muflix vous avez probablement manqué une déclaration de retour alors.

35voto

Jason Gennaro Points 20848

Vous pourriez utiliser la fonction de confirmation JS.

<form onSubmit="if(!confirm('Is the form filled out correctly?')){return false;}">
  <input type="submit" />
</form>

http://jsfiddle.net/jasongennaro/DBHEz/

33 votes

onsubmit="return confirm('Is the form filled out correctly?');" serait beaucoup plus simple, et le résultat serait le même.

33voto

Majid Fouladpour Points 5287

La question soulevée dans le commentaire est valable, voici donc une révision différente qui est immunisée contre cela :

function show_alert() {
  if(!confirm("Do you really want to do this?")) {
    return false;
  }
  this.form.submit();
}

20voto

Pablo Salazar Points 41

Simple et facile :

<form onSubmit="return confirm('Do you want to submit?') ">
  <input type="submit" />
</form>

3voto

Alireza Points 40192

OK, changez juste votre code en quelque chose comme ça :

<script>
function submit() {
   return confirm('Do you really want to submit the form?');
}
</script>

<form onsubmit="return submit(this);">
   <input type="image" src="xxx" border="0" name="submit" onclick="show_alert();"
      alt="PayPal - The safer, easier way to pay online!" value="Submit">
</form>

Voici également le code en cours d'exécution, juste pour faciliter la compréhension du fonctionnement, il suffit d'exécuter le code ci-dessous pour voir le résultat :

function submitForm() {
  return confirm('Do you really want to submit the form?');
}

<form onsubmit="return submitForm(this);">
  <input type="text" border="0" name="submit" />
  <button value="submit">submit</button>
</form>

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