11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous.

J'ai un petit souci que j'ai du mal à régler avec les événements javascript, et jquery par la même occasion. voici les faits :

j'essaye de valider en temps réel mes champs de formulaire. Jusque là aucun souci, avec onchange et onkeyup toutes les possibilités sont cernées.

Toutes sauf une :
Imaginez un champ "Nom", lorsque l'on commence la saisie, le navigateur propose des noms tapés récemment dans une liste déroulante. Si je valide un élément de cette liste à l'aide de la touche entrée, ça marche, si par contre je clique sur l'élément de la liste, aucun event n'est capable de prendre en compte.

Avez-vous une solution simple au problème ?
Merci !
Salut,

emixfr a écrit :
si par contre je clique sur l'élément de la liste, aucun event n'est capable de prendre en compte.
Sauf erreur de ma part ce n'est pas possible puisque la "liste déroulante" en question ne fait pas partie du DOM. Smiley murf
Je suis bien hélas d'accord ...
Cela dit ça fait un peu tâche d'avoir juste ça qui ne marche pas lorsque l'on veut faire un formulaire qui valide en direct les champs !

Je cherche donc une solution, pas trop crade, alternative à ce souci.
Par exemple pour le moment j'essaie à partir du moment ou il y a un focus sur un champ, de le vérifier toutes les X secondes via un timer, mais bon, c'est pas super super ...

Merci pour ta réponse Smiley smile
emixfr a écrit :
un formulaire qui valide en direct les champs !
Je n'avais pas compris que c'était ce que tu voulais dire par "en temps réel". Perso je trouve ça un peu lourd et surtout je ne vois pas bien l'intérêt (à part pour un système d'auto-completion). Pourquoi ne pas te contenter du onblur et du onsubmit ?
En fait par validation j'entendais : vérification des champs (via expressions régulières)
dès que l'internaute tape quelque chose.

Par mesure d'ergonomie. La solution n'est pas lourde, il manque juste de pouvoir valider si la saisie est bonne quand l'internaute clique dans une liste.
emixfr a écrit :
En fait par validation j'entendais : vérification des champs (via expressions régulières)
dès que l'internaute tape quelque chose.
C'est bien ainsi que je l'avais compris mais (toujours personnellement) je le ferais sur le onblur car :
1) c'est quand même moins lourd (bon... c'est vrai qu'il n'y a pas mort d'homme).
2) j'aime pas du tout quand mon navigateur m'empêche de taper certaines lettres : je préfère qu'il attende que j'ai fini pour me dire que j'ai fait une erreur. Et d'ailleurs pour le coup je trouve ça plus ergonomique.
En fait il empeche rien à l'utilisateur, simplement le champ est accompagné d'une petite boule rouge " à compléter" et une fois que le champ est correctement complété il passe en "champ valide" vert

c'est juste ça. Mon code est propre et lourd mais juste il va manquer le cas de figure cité plus haut.

Si c'est le dernier champ à remplir et que la personne ne clique pas ailleur le onblur ne fait pas son effet, le bouton d'envoi reste désactivé, d'ou le besoin que tous les champs soient valides avant l'envoi
emixfr a écrit :
En fait il empeche rien à l'utilisateur, simplement le champ est accompagné d'une petite boule rouge " à compléter" et une fois que le champ est correctement complété il passe en "champ valide" vert
Ah OK !

Bon mais comme il ne s'agit que d'une aide (puisqu'à priori tous les champs vont être re-vérifiés sur le onsubmit et ensuite côté serveur) tu pourrais tout de même rajouter le onblur même si effectivement il risque de ne pas être déclenché. Smiley murf
Yep, j'ai mis onchange c'est pareil du coup, ca vérifie seulement si il y a eu un changement dans le champ.

Bon du coup je vais tenter d'autres trucs si personne n'a de solution