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 :

Champ vide mais champ.value.length > 0 ?...


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut Champ vide mais champ.value.length > 0 ?...
    Bonjour a tous,

    Dans une page ecrite en Perl, j'insere du code javascript.
    En fait, j'ai 3 champs dans lesquel je peux saisir des dates.
    Par la suite, je fais des comparaisons.
    Il faut que j'ai date1 < date2 < date3.

    J'ai tout mis dans une fonction donc j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var date1 = DateAnglaise(document.getElementById('date1').value);
    var date2 = DateAnglaise(document.getElementById('date2').value);
    var date3 = DateAnglaise(document.getElementById('date3').value);
    La fonction date anglaise permmettant de passer du format JJ/MM/AAAA au format AAAA/MM/JJ pour que je puisse faire une comparaison entre les dates.

    Afin de savoir si je devais comparer le contenu des champs, je teste si ils contiennent une valeur ou pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (date1.length > 0)
    {.....}
    if (date2.length > 0)
    {.....}
    if (date3.length > 0)
    {.....}
    Ce que j'obtenais n'étant pas logique, j'ai fait un affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    alert (date1.length);
    alert (date2.length);
    alert (date3.length);
    Si une date est entree, la taille affichée est de 25.
    Si aucune date n'est entree, le champ est donc vide, il est retourné 18. Je m'attendais a avoir 0...
    Comment cela se fait il?

    Merci pour l'aide

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    ben que fais ta fonction DateAnglaise

    à mon avis elle formate la date avec des : ou des / donc xxxx = 8 caractères...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('date1).value.length
    te retournera bien 0 si le champs est vide ...

  3. #3
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    euh je sais pas si c'est comme ca dans ton code mais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var date1 = DateAnglaise(document.getElementById('date1').value); 
    var date2 = DateAnglaise(document.getElementById('date2').value); 
    var date3 = DateAnglaise(document.getElementById('date3').value);
    serait mieux non ?

    Sinon essaye la fonction trim :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function trim(str) {
       return str.replace(/(^\s*)|(\s*$)/g,"")
    }
    qui supprimera tous les espaces parasites

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par Oluha
    euh je sais pas si c'est comme ca dans ton code mais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var date1 = DateAnglaise(document.getElementById('date1').value); 
    var date2 = DateAnglaise(document.getElementById('date2').value); 
    var date3 = DateAnglaise(document.getElementById('date3').value);
    serait mieux non ?
    Oui, c'est mieux, j'ai mal arrangé mon code lorsque j'ai voulu le simplifier pour pouvour le mettre dans le post. J'ai fait la correction.

    Citation Envoyé par Oluha
    Sinon essaye la fonction trim
    Je vais essayer, mais je ne vois pas pourquoi j'aurais des espaces dans mon champ. Si je clique dedans et que je fais 'fin', je reste au tout debut du champ.

    Citation Envoyé par SpaceFrog
    ben que fais ta fonction DateAnglaise
    J'ai pris la fonction DateAnglaise, et voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // Renvoye une date en format anglais avec le séparateur choisi "02/03/1981" -> "1981-3-2"
    // Le premier paramètre est la date a convertir, le second est le caractère de séparation choisi
    function DateAnglaise(LeParam1,LeParam2){
     
    LaDate = new Array(3);
    LaDate = DecomposeDate(LeParam1);
     
    LeRetour = LaDate[2]+LeParam2+LaDate[1]+LeParam2+LaDate[0];
    return LeRetour;
    }
    Citation Envoyé par SpaceFrog
    à mon avis elle formate la date avec des : ou des / donc xxxx = 8 caractères...
    Ca me renvoie 18 caracteres et non pas 8. Ce n'est pas une erreur de frappe!

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Je viens d'essayer en rajoutant la fonction trim, rien n'y fait...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var date1 = DateAnglaise(document.getElementById('date1').value);
    date1=trim(date1);
    alert (date1.length);
    Toujours 18 et 25 en longueur selon que le champ est vide ou plein...

    Du coup, je teste si la longueur est superieure a 18 mais je trouve ca tres tres moyen... Comment le justifier, mis a part que j'ai mis ca pcq ca marche...

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    et en amont?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('date1).value.length
    ça te retourne quoi ça ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Que ce soit avant ou apres l'utilisation de la fonction trim, la longueur d'un champ vide est de 18, et celle d'un champ plein est de 25...

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    je souhaiterais juste attirer ton attention sur le fait que
    date1 n'est pas le contenu du champs, mais le formatage du contenu du champs...
    ma question était donc que te retourne le contenu du champs ???

  9. #9
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    A refaire :
    DateAnglaise
    ...

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par Matthieu2000
    A refaire :
    Citation:
    DateAnglaise
    ...
    Merci, la, ca m'aide!...

    Citation Envoyé par SpaceFrog
    je souhaiterais juste attirer ton attention sur le fait que date1 n'est pas le contenu du champs, mais le formatage du contenu du champs...
    Effectivement...
    J'ai fais le test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    alert(document.getElementById('date1').value.length)  --> 0
    alert(date1.length) -->18
    alert(DateAnglaise(document.getElementById('date1').value).length) -->18
    C'est donc date anglaise qui renvoie 18 caracteres = undefinedundefined...

    J'ai donc fini par mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var date1 = document.getElementById('date1').value; 
    var date2 = document.getElementById('date2').value; 
    var date3 = document.getElementById('date3').value; 
    var date1_ang = DateAnglaise(date1);
    var date2_ang = DateAnglaise(date2);
    var date3_ang = DateAnglaise(date3);
    if (date1.length > 0) 
    {.....} 
    if (date2.length > 0) 
    {.....} 
    if (date3.length > 0) 
    {.....}
    Et du coup, ca marche!

    Merci encore SpaceFrog!
    PS : J'adore ton avatar!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Champ vide ou champ null
    Par vancouver dans le forum Débuter
    Réponses: 3
    Dernier message: 15/11/2008, 09h07
  2. Réponses: 3
    Dernier message: 27/04/2007, 09h56
  3. Champ vide mais non nul
    Par nbutin dans le forum Requêtes
    Réponses: 2
    Dernier message: 01/08/2006, 17h38
  4. Champs NULL ou champs vide
    Par jexl dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 20/10/2005, 19h10
  5. base vide mais champs toujours affichés
    Par trotters213 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/03/2005, 09h08

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