Formulaire : Exemple

Validation JS

La vérification d'un formulaire peut être poussée grâce au JavaScript. Cette validation peut se faire avant ou après la validation HTML

Les données peuvent être vérifiées, dans l'ordre, :

  1. lors de la frappe (événements key...)
  2. lorsque le champ est quitté (événement blur)
  3. lors de la soumission

onblur

L'attribut onblur traite l'événement lié au fait que le champ perd le focus

Cliquez d'abord dans le champ (avant de le quitter)

  <form onsubmit="alert('Réaction au submit !');return false;">
    <p>
      <input required="required" onblur="alert('Ce champ a été quitté');" />
      <button type="submit" onclick="alert('Réaction au click !');">Afficher</button>
    </p>
  </form>

Il suffit de remplacer ces "alertes" par des appels de fonction. La validation du formulaire pourrait alors être très poussée. Surtout lorsqu'on sait qu'un champ peut réagir à de nombreux autres événements, tel que onkeypress, onmouseover, ...

Voir : Tous les événements

onsubmit

  <form onsubmit="alert('Réaction au submit !');return false;">
    <p>
      <input required="required" />
      <button type="submit">Afficher</button>
    </p>
  </form>

Il suffit de remplacer cette "alerte" par un appel de fonction qui pourra faire tous les tests souhaités. La validation du formulaire pourrait ainsi être poussée.

La vérification peut même être faite avant la vérification HTML ...

onclick

  <form onsubmit="alert('Réaction au submit !');return false;">
    <p>
      <input required="required" />
      <button type="submit" onclick="alert('Réaction au click !');">Afficher</button>
    </p>
  </form>

Exemple complet

Après la validation faite par le navigateur (sans taper du code JavaScript), on peut pousser plus loin la vérification (en tapant du code JavaScript dans une fonction). Par exemple, en remplaçant alert('Correctement rempli !'); par isDataOK();

Et, si la fonction isDataOK() retourne true, lorsque les données sont valides, il suffit de taper :

<form onsubmit="return isDataOK();">

Nous verrons bientôt comment écrire une fonction.

Testez ce nouveau formulaire !

*
*
*
*


Les données seront envoyées nulle part, car - lorsque l'envoi est autorisé - l'adresse du fichier devant traiter ces données n'est pas indiquée ...

Extrait du code HTML de ce fichier :

        <form onsubmit="return isDataOK();">
          ...
        </form>

  <script src="validationJS.js"></script>
  </body>
</html>

Fichier jour1b.js

function isDataOK(){

  var prenom=document.getElementById("Prenom").value;

  if(prenom=="Thibaut") {
    alert("Les données seront envoyées et le formulaire effacé.");
    return true;
  }
  else {
    alert("Données NON envoyées !\nVeuillez indiquer 'Thibaut' comme prénom.");
    return false;
  }

}

Le code de cette fonction est fourni sans explication.
À la fin de ce mini-cours, vous comprendrez ce code.

type="button"

Si les données ne seront pas envoyées à un serveur (type="submit") - mais serviront à un script - et que la validation HTML, faite automatiquement par le navigateur, n'est pas souhaitée (préférant la faire en JavaScript), le bouton de type="button" est alors recommandé.

Hormis l'attribut maxlength évalué par le navigateur lors de la frappe, les contraintes HTML (required="required", max="...", min="...", ...), évaluées par le navigateur lors de la demande de soumission, ne seront alors pas utilisées (puisqu'il n'y a pas d'événement de type="submit").

Quant au type de données admissibles (notamment type="number"), cela dépendra du navigateur (qui pourrait interdire la frappe de caractères n'entrant pas dans la composition d'un nombre, tels que la plupart des caractères alphabétiques).