IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Contrôle de dates


Sujet :

JavaScript

  1. #1
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 39
    Par défaut Contrôle de dates
    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 :

    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();
     
    }
    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 ?

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Billets dans le blog
    1
    Par défaut
    Je pense que tes conditions sont pas adaptés, si ta function ds_onclick est la function déclanché par un onchange ou onblur :
    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
     
    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); //<- ici tu affecte ta date donc rien avoir.
    alert(ds_element.value); // <-- s'est la valeur que tu cherche (la nouvelle)
    	// 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();
     
    }
    Je n'est pas tout ton code, donc j'extrapole, je sais pas si j'ai bien saisit ton problème.

  3. #3
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 39
    Par défaut
    Bon j'ai tardé à vous répondre car j'attendais que free veuille bien m'ouvrir des pages persos pour mieux vous exposer mon problème. Comme ça vous avez aussi le code source qui est long comme le bras.
    http://demojeannot.free.fr/
    Voilà, c'est juste un petit formulaire et vous voyez mon problème: je veux faire un contrôle de saisie quand on quitte le champ (sur onBlur): je récupère bien la valeur du champ si on y fait une entrée libre, mais si on utilise le calendrier la valeur récupérée n'est pas mise à jour, bien que affichée dans le champ et je ne comprend pas ce mystère.

    Edit: pardon le fait de l'écrire m'a fait comprendre: quand on clique sur le calendrier, ça déclenche le on Blur, et cela avant que le champ soit mis à jour.
    Comment je peux m'en sortir?

Discussions similaires

  1. [Dates] Contrôle validité date
    Par marcel marie dans le forum Langage
    Réponses: 2
    Dernier message: 10/01/2009, 13h17
  2. Contrôle de dates
    Par kodshadow dans le forum Forms
    Réponses: 1
    Dernier message: 14/10/2008, 19h10
  3. Contrôle Validité Date
    Par HiRoN dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 14/12/2007, 14h12
  4. contrôle de date - jours ouvrés
    Par RobinNono dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/08/2007, 12h03
  5. Contrôle de date
    Par amka dans le forum Access
    Réponses: 7
    Dernier message: 24/08/2006, 12h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo