11486 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous
Il y a de nombreuses façons de changer le contenu d'un <input>, ce qui impose de mettre plusieurs eventListeners pour effecteur des vérifications à chaque changement.
Le résultat est que l'on est parfois conduit à effectuer plusieurs fois la même vérification.
par exemple

inputNode.addEventListener('change', verif);
inputNode.addEventListener('blur', verif);

Si on entre les données par le clavier, cela conduit à appeler deux fois la fonction verif
Y a-t-il un moyen simple d'éviter cette double vérification ?
Modifié par PapyJP (03 Jun 2020 - 16:06)
Modérateur
Salut,

Pourquoi lancer les deux avec la même fonction ? Si on entre les données avec le clavier le blur sera lancé comme tu dis... du coup je vois pas l’intérêt de relancer le change... il y a un cas ou seulement le change est lancé sans le blur ?

Sinon tu peux jouer avec une variable que tu toggle peut etre... voir avec removeEventListener()...
Merci de ta réponse
Cela fait des années que je ne fais que très peu de <form> dans mes sites.
Je le suis lancé dans une refonte de l’administration du site qui nécessite de gérer de multiples <form> et je tiens à faire autant que possible un code commun pour la gestion de ces <form>
Je me suis replongé dans la doc, j’ai découvert que depuis html5 plein de choses avaient changé, bref ce domaine est devenu un nouveau terrain de jeux Smiley cligne
Je ne suis pas très au clair sur la gestion des événements c’est pourquoi j’ai mis ceinture et bretelles. Est-ce que tu connais un document clair à ce sujet? La plupart de ce que j’ai lu se contente de lister les événements par ordre alphabétique ce qui n’est pas très didactique !
Modérateur
Bah en tapant "gestion erreurs formulaire js" dans un moteur de recherche on tombe sur quelques tuto dont celui de openclassroom : https://openclassrooms.com/fr/courses/146276-tout-sur-le-javascript/144576-td-verification-dun-formulaire il date un peu mais ils utilisent "blur" uniquement.

Oui la liste des event est longue c'est pour ça qu'il faut partir de ton besoin. Tu veux vérifier un champs quand on perd le focus, qu'on ait changé ou non la valeur, du coup "blur" correspond bien.
Ok.
Merci beaucoup
J’ai fait comme ça et ça semble faire ce que je veux.
J’ai ajouté un événement client que je peux appeler quand ça m’arrange pour faire des vérifications quand j’en ai besoin, par exemple après avoir forcé une value par programme