-
onclick et onchange
Bonjour à tous et à toutes,
J'espère poster au bon endroit sur le forum, si ce n'est pas le cas, veuillez m'en excuser.
Je vais expliquer pourquoi je poste sur ce forum :
J'ai un champ "type=text" dans lequel est contenu une date. Il est demandé à l'utilisateur de rentrer la date en brut ("19-06-2013" par exemple), et lorsque l'on quitte le champ, l'évènement 'onchange' s'enclenche et recharge la page avec la nouvelle date.
Ainsi, j'obtiens une date de début, et une date de fin, qui permet ensuite de faire une recherche MySQL entre ces deux dates. Bref passons.
Seulement voilà, je voudrais améliorer le système en y introduisant un calendrier. J'ai réalisé des tests, ou j'effectuais un 'onclick' (pour afficher le calendrier), et où normalement après avoir sélectionner la date, l'évènement 'onchange' doit s'enclencher. Seulement voilà, ce n'est pas le cas. Le 'onchange' ne s'effectue pas. Et je ne comprend pas pourquoi.
J'ai pensé que c'était le script du calendrier qui bloquait quelque chose (code pris sur internet, donc je n'ai pas pu tout décelé de son fonctionnement), mais après des tests simples comme :
- un bouton
- un champ text
- lorsque l'on clique sur le bouton, cela change le 'value' du champ text
- dans la balise du text, onchange appelle une fonction javascript qui affiche une alerte.
Résultats :
- Lorsque je clique sur le bouton, le texte change, mais l'alerte ne s'affiche pas.
- Si je change le texte en brut avec mon clavier, en sortant du champ, l'alerte s'affiche.
Conclusion :
Je ne comprend pas pourquoi cela ne fonctionne pas en cliquant sur le bouton, alors que la valeur a bien changé, c'est pourquoi je me tourne vers vous.
Merci d'avance pour vos réponses, en espérant avoir été clair et précis,
Bertrand
-
Est-ce que tu pourrais nous fournir le code permettant de reproduire le problème ?
-
C'est logique.
Un événement onchange correspond à la séquence
- Perte du focus.
- La valeur du champ a été modifiée.
Si tu modifies la valeur du champ via un script, le champ n'étant pas actif, il ne peut pas perdre le focus et du coup l'événement n'est pas déclenché.
Dans le cadre d'un calendrier, c'est un peu plus vicieux, car le champ prend le focus quand tu cliques dessus, mais le perd lorsque tu cliques sur un item du calendrier, donc avant que la valeur du champ soit modifiée et dans ce cas, c'est l'étape 2 qui n'est plus satisfaite...
Pour la solution, c'est simple : le onchange déclenche l'exécution d'une fonction JavaScript, tu n'as donc qu'à appeler cette fonction quand la date choisie est cliquée !
-
Bonjour,
merci pour vos réponses,
étant donné que la réponse de Bovino est très bien expliqué, je vais suivre ce conseil, et testé comme vous m'avez dit.
Si jamais je n'ai aucun résultat, je posterais le code de test pour que Sabotage et d'autres puissent donner leur avis également.
Merci,
Bertrand
-
Re Bonjour,
Je reposte pour dire que ca fonctionne ! J'ai réussi à faire ce que je voulais faire.
Un grand merci à vous pour vos réponses claires et précises :)
Bonne continuation,
Bertrand