85 votes

Déclencher la validation HTML5 standard (formulaire) sans utiliser le bouton d'envoi ?

Quelqu'un sait comment je peux déclencher la validation HTML5 standard dans un formulaire sans utiliser de bouton d'envoi ? (JavaScript ou jQuery).

Je ne veux pas envoyer POST/GET demande, seulement faire la validation.

24voto

Rick Liddle Points 1796

La réponse acceptée à cette question semble être ce que vous recherchez.

Bref résumé : dans le gestionnaire d'événements pour la soumission, appelez event.preventDefault() .

11voto

john.dou.2011 Points 98

Vous devez soumettre le formulaire pour que la validation html5 fonctionne. Il existe un moyen de contourner cela pour obtenir ce que vous voulez. Voir le code :

 <body>
    <h1>Validation Example</h1><br />
    <h2>Insert just 1 digit<h2>
    <form id="form" onsubmit="return false">
        <label>Input<input type="text" pattern="[0-9]" id="input" /></label> 
        <input type="submit" class="hide" id="inputButton">         
    </form>
</body>

Voir un exemple ici

Remarque : l'utilisation de form.submit() n'a pas fonctionné pour moi. J'ai donc créé un bouton d'envoi caché, qui se déclenche à la clé. Ne me demandez pas pourquoi. Peut-être que quelqu'un pourrait le préciser.

5voto

Dayron Gallardo Points 415

Ceci est mon implémentation de la solution suggérée par @mhm, où j'ai abandonné l'utilisation de jQuery.

La variable formId contient l'id du formulaire et msg est un objet avec les messages de mon application.

Cette implémentation essaie d'informer l'utilisateur avec les messages d'erreur HTML 5 natifs, si ce n'est pas possible, alerter un message d'erreur de formulaire générique.

S'il n'y a pas d'erreurs, je soumets le formulaire.

 let applyForm = document.getElementById(formId);

if (!applyForm.checkValidity()) {
  if (applyForm.reportValidity) {
    applyForm.reportValidity();
  } else {
    alert(msg.ieErrorForm);
  }
} else {
  applyForm.submit();
}

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