Bonjour
J'ai 20 ou 30 formulaires qui utilisent tous le même fichier javascript mutualisé pour le contrôle de saisie général (champs obligatoire, validité des dates, ...) lors de l'envoi. Pour aider à la saisie des dates, j'utilise le script Dynamic Date Selector http://javascriptkit.com/script/scri...selector.shtml, en autorisant aussi la saisie libre dans le champ. Ce script est aussi dans mon fichier mutualisé.
Seulement là j'ai un formulaire à faire avec plusieurs dates et je dois vérifier la cohérence des dates entre elles (échelonnement), ainsi que par rapport à d'autres dates précisées lors de la création de la page en PHP.
Alors vérifier lors de l'envoi cela me fait mal au ventre: car ou je duplique le code du Dynamic Date Selector et le code général de vérification du formulaire en y ajoutant mes fonctions de vérification dans un nouveau fichier javascript rien que pour cette page, ou j'ajoute mon code au fichier existant et il sera chargé dans 20 ou 30 pages qui n'en n'ont rien à faire.
C'est pour ça que j'essaye de vérifier lors de la saisie, en attachant des événement onChange et onBlur à chaque champ de saisie de date.
onChange : cela fonctionne très bien si l'utilisateur modifie directement la valeur. Mais il n'est pas déclenché si la date a été choisie avec le Dynamic Date Selector (normal). Je récupère bien la valeur saisie.
onBlur : il est bien déclenché si on choisit une date avec le Dynamic Date Selector, mais le problème c'est qu'en lisant le champ je récupère l'ancienne valeur. Je ne comprend pas pourquoi.
J'ai donc essayé de travaillé avec une variable globale; le code est :
Et bien dans ds_element.value ou ds_element.innerHTML je trouve l'ancienne valeur alors que la valeur sélectionné avec le Dynamic Date Selector est bien dans le champ. Comment est-ce possible ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 var ds_element; function ds_onclick(d, m, y) { // Hide the calendar. ds_hi(); // Set the value of it, if we can. if (typeof(ds_element.value) != 'undefined') { ds_element.value = ds_format_date(d, m, y); // Maybe we want to set the HTML in it. } else if (typeof(ds_element.innerHTML) != 'undefined') { ds_element.innerHTML = ds_format_date(d, m, y); // I don't know how should we display it, just alert it to user. } else { alert (ds_format_date(d, m, y)); } ds_element.focus(); }
Partager