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 :

Tester la valeur d'un champ pour éviter options "has no properties"


Sujet :

JavaScript

  1. #1
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut Tester la valeur d'un champ pour éviter options "has no properties"
    Bonjour,

    J'ai le message suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("origine").options has no properties
    Mon code est celui-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var liborigine = document.getElementById('origine').options[document.getElementById('origine').selectedIndex].text;
    Le contexte d'utilisation est une saisie d'informations en ligne qui s'affiche ensuite dans mon formulaire par ajout de ligne.

    La 1ère ligne saisie ne présente aucune erreur, "origine" est choisi dans un Select et là en l'occurence, je ne choisi rien.
    Dès la 2ème ligne saisie, j'ai cette erreur.

    Comment tester le contenu du champ pour éviter ce genre de problème.

    Merci d'avance
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  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 637
    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 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    ben en l'occurence ça voudrait dire que le selectedIndex est supérieur à options.length-1 ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Dans mon code après la constitution de ma ligne, je l'écris, puis j'initialise les champs pour la saisie suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // Ajout de la ligne
    	document.getElementById('ajoutLigne').appendChild(ligne);
     
    	// Initialisation des champs de l'écran
    	document.getElementById('contact_nom').value='';
    	document.getElementById('texte').value='Votre texte';
    	document.getElementById('origine').value='-1';
    	document.getElementById('action').value='-1';
    	document.getElementById('pourle').value='Pour le';
    	document.getElementById('ajoutLigne').scrollTop=50;
    Pour "origine" j'avais " ", j'ai mis "-1", mais cela ne change rien au message
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  4. #4
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Est-ce que ça te donne ce que tu veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(document.getElementById('iddetonchamp')){
       ...
    }

  5. #5
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Je n'ai pas de problème avec l'id de mon champ puisque sur ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var origine = document.getElementById('origine').value; 
    	var liborigine = document.getElementById('origine').options[document.getElementById('origine').selectedIndex].text;
    Il râle sur la ligne 2, pas sur la 1ère.

    La 1 c'est l'id mon Select, la 2 c'est le texte sélectionné de l'id de mon Select.
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  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 637
    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 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(monselect.selectedIndex <monslect.options.length){
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    J'ai fait comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    alert(document.getElementById('origine').selectedIndex);
    	alert(document.getElementById('origine').options.length);
    	if(document.getElementById('origine').selectedIndex <document.getElementById('origine').options.length)
    	{ 
    		var liborigine = document.getElementById('origine').options[document.getElementById('origine').selectedIndex].text;
    	}
    	else
    	{
    		var liborigine = '';
    	}
    au 1er passage j'ai les valeurs 0 puis 3 dans mes alert

    au 2ème passage j'ai "undefined" au 1er alerte
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  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 637
    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 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(document.getElementById('origine').selectedIndex  && document.getElementById('origine').selectedIndex<document.getElementById('origine').options.length)
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Je garde la même erreur
    document.getElementById("origine").options has no properties
    avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(document.getElementById('origine').selectedIndex && document.getElementById('origine').selectedIndex<document.getElementById('origine').options.length)
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  10. #10
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    En plaçant le code comme ceci, je n'ai plus d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(document.getElementById('origine').selectedIndex && document.getElementById('origine').selectedIndex<document.getElementById('origine').options.length)
    	{ 
    		var liborigine = document.getElementById('origine').options[document.getElementById('origine').selectedIndex].text;
    	}
    	else
    	{
    		var liborigine = '';
    	}
    Mais du coup, je ne récupère la valeur attendue que la 1ère fois, que je fasse un select ou pas sur mon formulaire.

    Ensuite que je fasse un select ou pas, j'ai l'erreur.

    J'ai essayé en retirant l'initialisation de mes champs à chaque ajout de ligne, mais c'est pareil.
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  11. #11
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Merci pour votre accompagnement, j'ai honte, mais je dois l'avouer pour les autres.

    J'avais 2 fois le même id, lorsque je rajoute une ligne, j'ai oublié d'associer mon indice de ligne au nom de l'id.

    Merci et pardon, j'ai honte....
    Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.

  12. #12
    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 637
    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 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    le tout c'est d'avoir trouvé ton bug, ça m'arrive aussi plus souvent qu'à mon tour
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. [AC-2003] Boucle If pour tester la valeur d'un champ
    Par tibat31520 dans le forum Access
    Réponses: 3
    Dernier message: 26/07/2011, 09h20
  2. [word vba] valeur d'un champ pour un caption
    Par greg778 dans le forum VBA Word
    Réponses: 2
    Dernier message: 16/06/2008, 09h25
  3. Tester la valeur d'un champ en direct live
    Par gedeon555 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/08/2006, 17h53
  4. [Mail] verifier les champs pour éviter le mail vide
    Par temperature dans le forum Langage
    Réponses: 5
    Dernier message: 04/05/2006, 11h26
  5. valeur d'un champ pour l'utiliser dans une requete
    Par bachilbouzouk dans le forum ASP
    Réponses: 4
    Dernier message: 08/04/2005, 16h58

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