J'ai ce formulaire dans mon application et je vais le soumettre via AJAX, mais je veux utiliser HTML5 pour la validation côté client. Je veux donc pouvoir forcer la validation du formulaire, peut-être via jQuery.
Je souhaite déclencher la validation sans soumettre le formulaire. C'est possible?
jquery
html
validation
razenha
la source
la source
Réponses:
Pour vérifier si un certain champ est valide, utilisez:
Pour vérifier si le formulaire est valide, utilisez:
Si vous souhaitez afficher les messages d'erreur natifs de certains navigateurs (tels que Chrome), malheureusement, la seule façon de le faire est de soumettre le formulaire, comme ceci:
J'espère que cela t'aides. N'oubliez pas que la validation HTML5 n'est pas prise en charge dans tous les navigateurs.
la source
$myForm.submit()
par$myForm.find(':submit').click()
$('<input type="submit">').hide().appendTo($myForm).click().remove();
checkValidity()
, mais elle contient également une erreur dangereuse.checkValidity()
est ce qui déclenche les messages d'erreur du navigateur natif, pas le clic sur le bouton d'envoi. Si vous avez un écouteur d'événement qui écoute le clic sur le bouton d'envoi, vous le déclencherez lorsque vous faites `$ myForm.find (': submit'). Click ()`, qui se déclenchera lui-même et provoquera une récursion infinie.J'ai trouvé que cette solution fonctionnait pour moi. Appelez simplement une fonction javascript comme celle-ci:
action="javascript:myFunction();"
Ensuite, vous avez la validation html5 ... vraiment simple :-)
la source
action="javascript:0"
sur l' événement<form>
et liéclick
sur le<button>
toMyFunction()
et tout a très bien fonctionné. Je garde tout JS hors du HTML.MyFunction
peut alors testerform.checkValidity()
pour continuer.onsubmit()
est presque toujours meilleure que celle des boutonsonclick()
, car il existe d'autres façons de soumettre un formulaire. (Notamment en appuyant sur lareturn
touche.)action="javascript:myFunction();"
ou neaction="javascript:0"
fonctionne plus dans le dernier Firefox (67). Fonctionne sur Chrome cependant.de: validation de formulaire html5
la source
reportValidity
est uniquement pris en charge par Chrome 40.0$("form")[0].reportValidity()
. J'en ai besoin en cas d'échec de la vérification de validité.le code ci-dessous fonctionne pour moi,
la source
reportValidity()
est la meilleure fonction pour mettre en évidence les champs obligatoires.Voici une manière plus générale qui est un peu plus propre:
Créez votre formulaire comme ceci (peut être un formulaire factice qui ne fait rien):
Liez tous les formulaires que vous ne voulez pas vraiment soumettre:
Supposons maintenant que vous ayez un
<a>
(dans le<form>
) que vous souhaitez valider le formulaire au clic:Quelques notes ici:
checkValidity()
est suffisant (au moins en chrome). Si d'autres pouvaient ajouter des commentaires en testant cette théorie sur d'autres navigateurs, je mettrai à jour cette réponse.<form>
. C'était juste un moyen propre et flexible d'avoir une solution à usage général.la source
Peut-être en retard à la fête, mais j'ai trouvé cette question en essayant de résoudre un problème similaire. Comme aucun code de cette page ne fonctionnait pour moi, entre-temps, j'ai trouvé une solution qui fonctionne comme spécifié.
Le problème est lorsque votre
<form>
DOM contient un seul<button>
élément, une fois déclenché, qui<button>
se résumera automatiquement sous forme. Si vous jouez avec AJAX, vous devrez probablement empêcher une action par défaut. Mais il y a un hic: si vous le faites, vous empêcherez également la validation HTML5 de base. Par conséquent, il est judicieux de ne prévenir les valeurs par défaut de ce bouton que si le formulaire est valide. Sinon, la validation HTML5 vous protégera de la soumission. jQuery vouscheckValidity()
aidera avec ceci:jQuery:
Le code décrit ci-dessus vous permettra d'utiliser la validation HTML5 de base (avec correspondance de type et de modèle) SANS soumettre de formulaire.
la source
Vous parlez de deux choses différentes "validation HTML5" et validation du formulaire HTML en utilisant javascript / jquery.
HTML5 "a" des options intégrées pour valider un formulaire. Telles que l'utilisation de l'attribut "requis" sur un champ, qui pourrait (selon l'implémentation du navigateur) échouer la soumission du formulaire sans utiliser javascript / jquery.
Avec javascrip / jquery, vous pouvez faire quelque chose comme ça
la source
triggerHtml5Validation()
fonction. Le code ci-dessus attachera soumettre l'événement à votre formulaire; en soumettant vous interceptez l'événement et validez le formulaire. Si vous ne souhaitez jamais soumettre le formulaire, simplementreturn false;
et la soumission n'aura jamais lieu.return (valid) ? true : false
===return valid
. :)return valid
ne renvoie tout simplement pas false pour les valeurs nulles / non définies. Mais cela n'a pas vraiment d'importance, la réponse était quand même un pseudo-code, le point est: utilisez return false pour ne pas soumettre le formulaire ^^la source
Pour vérifier tous les champs obligatoires du formulaire sans utiliser le bouton soumettre, vous pouvez utiliser la fonction ci-dessous.
Vous devez attribuer l' attribut requis aux contrôles.
la source
Vous n'avez pas besoin de jQuery pour y parvenir. Dans votre formulaire, ajoutez:
ou en JavaScript:
Dans votre
buttonSubmit
fonction (ou comme vous l'appelez), vous pouvez soumettre le formulaire en utilisant AJAX.buttonSubmit
ne sera appelé que si votre formulaire est validé en HTML5.Au cas où cela aiderait quelqu'un, voici ma
buttonSubmit
fonction:Certains de mes formulaires contiennent plusieurs boutons d'envoi, d'où cette ligne
if (submitvalue == e.elements[i].value)
. J'ai défini la valeur de l'submitvalue
utilisation d'un événement de clic.la source
J'ai eu une situation assez complexe, où j'avais besoin de plusieurs boutons de soumission pour traiter différentes choses. Par exemple, Enregistrer et supprimer.
La base était qu'il était également discret, donc je ne pouvais pas simplement en faire un bouton normal. Mais je voulais également utiliser la validation html5.
De plus, l'événement de soumission a été remplacé au cas où l'utilisateur aurait appuyé sur Entrée pour déclencher la soumission par défaut attendue; dans cet exemple, enregistrez.
Voici les efforts du traitement du formulaire pour continuer à fonctionner avec / sans javascript et avec la validation html5, avec des événements de soumission et de clic.
xHTML
Javascript
La mise en garde à l'utilisation de Javascript est que le onclick par défaut du navigateur doit se propager à l'événement de soumission DOIT se produire afin d'afficher les messages d'erreur sans prendre en charge chaque navigateur dans votre code. Sinon, si l'événement click est remplacé par event.preventDefault () ou renvoie false, il ne se propagera jamais à l'événement submit du navigateur.
La chose à noter est que dans certains navigateurs ne déclenchera pas le formulaire soumis lorsque l'utilisateur appuie sur entrée, il déclenchera plutôt le premier bouton de soumission du formulaire. Il y a donc un fichier console.log ('form submit') pour montrer qu'il ne se déclenche pas.
la source
jQuery
explicitement. Il diffère en ce qu'il gère le traitement de la validation HTML5 avec plusieurs boutons d'envoi et empêche la soumission du formulaire AJAX lorsqu'il n'est pas valide. Par défaut à l'save
action lorsque l'utilisateur appuie sur laenter
touche du clavier. Au moment de ma publication, aucune des réponses fournies n'était une solution pour les boutons de soumission multiples ou la capture de la touche Entrée pour empêcher la soumission ajax.Vous pouvez le faire sans soumettre le formulaire.
Par exemple, si le bouton d'envoi du formulaire avec l'ID «recherche» se trouve dans l'autre formulaire. Vous pouvez appeler l'événement click sur ce bouton d'envoi et appeler ev.preventDefault après cela. Pour mon cas, je valide le formulaire B à partir du formulaire A. Comme ça
la source
Cette façon fonctionne bien pour moi:
Ajoutez un
onSubmit
attribut dans votreform
, n'oubliez pas d'inclurereturn
dans la valeur.Définissez la fonction.
la source
pas une meilleure réponse mais fonctionne pour moi.
la source
Je sais que cela a déjà été répondu, mais j'ai une autre solution possible.
Si vous utilisez jquery, vous pouvez le faire.
Créez d'abord quelques extensions sur jquery afin de pouvoir les réutiliser au besoin.
Ensuite, faites quelque chose comme ça où vous voulez l'utiliser.
la source
la source
Cela m'a permis d' afficher les messages d'erreur HTML 5 natifs avec validation du formulaire.
Remarque: RegForm est le
form id
.Référence
L'espoir aide quelqu'un.
la source
C'est un moyen assez simple de demander à HTML5 d'effectuer la validation pour n'importe quel formulaire, tout en ayant un contrôle JS moderne sur le formulaire. La seule mise en garde est que le bouton de soumission doit se trouver à l'intérieur du
<form>
.html
js
la source
Je pense que la meilleure approche
utilisera plugin jQuery Validation qui utilise les meilleures pratiques pour la validation des formulaires et il a également une bonne prise en charge du navigateur. Vous n'avez donc pas à vous soucier des problèmes de compatibilité du navigateur.
Et nous pouvons utiliser la fonction validation () de validation jQuery qui vérifie si le formulaire sélectionné est valide ou si tous les éléments sélectionnés sont valides sans soumettre le formulaire.
la source
Selon la question, la validité html5 devrait être validée en utilisant jQuery au début et dans la plupart des réponses, cela ne se produit pas et la raison en est la suivante:
lors de la validation à l'aide de la fonction par défaut du formulaire html5
nous devons comprendre que jQuery renvoie un tableau d'objets, tout en sélectionnant comme ceci
par conséquent, vous devez spécifier le premier index pour que la fonction checkValidity () fonctionne
voici la solution complète:
la source