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 :

Bug comparaison de champs


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de l.laurent60
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 276
    Par défaut Bug comparaison de champs
    Bonjour,

    Je suis en train de m'arracher les cheveux, je ne comprends pas pourquoi mon code JS ne fonctionne pas dans mon formulaire ????
    Voici le formulaire :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <form name="val" action="val.php" method="post" onsubmit="return verif()"><br/>
        <select name="NbrSalarie" >
            <option value=0></option>
            <option value=1    <?php echo $NbrS1; ?> >Moins de 10 </option>
            <option value=11   <?php echo $NbrS2; ?> >De 11 &agrave; 100</option> 
            <option value=101  <?php echo $NbrS3; ?> >De 101 &agrave; 1000</option> 
        </select>
        <input type="radio" name="MontantHT" value="5" checked="checked" />5&euro; <a href="#" onClick="popUp('membres')"><b>Membre</b></a> pour...<br/>
        <input type="radio" name="MontantHT" value="10" <?php echo $tarif2; ?> />10&euro; HT  <a href="#" onClick="popUp('membres')"><b>Membre</b></a> pour... <br/>
        <input type="radio" name="MontantHT" value="20" <?php echo $tarif3; ?>  />20&euro; HT  <a href="#" onClick="popUp('membres')"><b>Membre</b></a>  pour...<br/>
    Coté JS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if((document.val.MontantHT.value=="5") && (document.val.NbrSalarie.value>'1')) {  
        alert("Impossible");
        document.val.MontantHT.focus();
        return false
    }
    Pourquoi lorsque la valeur MontantHT est égal à 5 et que le nb de salarié et plus plus grand que 1 la condition ne s’exécute pas ????
    J'avais pensé que cela venait des cotes mais non je n'arrive pas a afficher Impossible !!!!

    J'espère que vous allez pouvoir m'éclairer car je suis en mode brouillard, merci par avance.

  2. #2
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    C quoi ce php dans le HTML ?
    Qu'est-on censé comprendre ?

    A+JYT

  3. #3
    Membre éclairé Avatar de l.laurent60
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 276
    Par défaut
    Ce code php est un selected="selected" conditionnel

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.val.MontantHT.value
    En dehors du côté quelque peu vintage de la notation, dans la masure où tu as trois champs différents ayant le nom MontantHT dans ton code, JavaScript est incapable de décider tout seul lequel il doit utiliser...
    Comment récupérer l'état de cases à cocher ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre éclairé Avatar de l.laurent60
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 276
    Par défaut
    Avant tout merci pour ton retour.
    Je ne comprends pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.val.MontantHT.value
    JS est bien capable d'apprécier le valeur passé donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.val.MontantHT.value==5
    devrait bien fonctionné

    et la comparaison de champs également, non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if((document.val.MontantHT.value=="5") && (document.val.NbrSalarie.value>'1')) {

  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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    merci de lire les règles incontournable d'utilisation de ce forum qui précisent que le code php n'est d'aucune utilité ici. Il faut nous coller le code html généré !!


    ensuite pour ce qui est de ton code ...
    hormis le fait de l'utilisation d'une syntaxe laxiste document.val.MontantHT.valuetes radios ont le même name pour fonctionner ensemble , MAIS ...

    document.val.MontantHT qui devrait avec plus de rigueur être écrit
    document.forms['val'].getElementsByName('MontantHT')ne retourne pas ce que tu penses et n'a pas de value.
    Il s'agit en effet de la COLLECTION des éléments portant le nom 'MontantHT'
    chacun de ses items étant un checkbox qui lui possède bien une propriété value.
    l'exemple par la pratique : http://jsfiddle.net/xaKY5/

    Il faut donc boucler sur la collection et tester le checked pour recpérer le value de celui qui est coché
    Avec un minimum de recherche sur le forum tu aurais trouvé la réponse http://javascript.developpez.com/sou...rms#radiocheck
    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
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Pour compléter ce que dit Spaffy.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.val.MontantHT.value
    Peut s'énoncer en français comme ceci : "Récupère la valeur du champ de formulaire ayant le nom MontantHT se trouvant dans le formulaire ayant le nom val du document".
    Tu pourras noter qu'il n'est nulle part fait mention de la notion de coché (ce qui semble être la source de ton incompréhension), donc encore une fois, comme tu as trois champs ayant le nom MontantHT, JavaScript est incapable de savoir duquel tu lui parle !

    Aussi dommage que cela puisse paraitre, il n'existe pas de méthode JavaScript permettant de récupérer uniquement les champs cochés.
    D'autre part, c'est aussi l'une des raisons pour lesquelles la notation utilisée est maladroite et à éviter car sa valeur de retour dépend de la structure du document : soit un élément DOM, soit une collection.

    Ceci dit, j'attire ton attention sur un point : tu montres un code qui ne fonctionne pas, donc soit tu viens de découvrir un bogue de JavaScript (ce qui est peu probable), soit ton code contient des erreurs. Je t'indique où se trouve l'erreur
    dans la masure où tu as trois champs différents ayant le nom MontantHT dans ton code, JavaScript est incapable de décider tout seul lequel il doit utiliser...
    et plutôt que d'essayer de comprendre ce qu'il se passe (en s'appuyant sur le lien donné), tu préfères persister à croire que ton code est correct. Ce n'est habituellement pas comme ça qu'on corrige ses erreurs.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  8. #8
    Membre éclairé Avatar de l.laurent60
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    276
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 276
    Par défaut
    Effectivement c'est une incompréhension de part, je vous remercie pour vos conseils qui vont me permettre d'avancer. Je vais corriger la syntaxe et faire les contrôles que je souhaite coté serveur.

    Merci à tous

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

Discussions similaires

  1. comparaison de champ de date
    Par viny dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 01/08/2007, 11h55
  2. Réponses: 4
    Dernier message: 01/06/2007, 17h50
  3. [VB.net] Bug submit sur champ de saisie
    Par addicts dans le forum ASP.NET
    Réponses: 8
    Dernier message: 12/07/2006, 10h57
  4. Comparaison de champs entre 2 tables ACCESS
    Par Proview dans le forum Access
    Réponses: 12
    Dernier message: 25/03/2006, 22h25
  5. [CR9] Bug avec les champs à valeur vide ?
    Par Djob dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 15/07/2003, 21h21

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