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 :

Recuperer la valeur d'un select bis


Sujet :

JavaScript

  1. #1
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut Recuperer la valeur d'un select bis
    Re à tous,
    je sais ca a déja été demandé des milllllllions de fois, mais mon code ne fonctionne pas.
    comment recuperer la valeurs selectionnée par l'internaute dans mon select

    function locacalculpro()
    {
    var pop=(document.getElementById('locduree').options[document.getElementById('locduree').selectedIndex].value)*12;
    }


    mon select
    <select id="locduree" onchange="locacalculpro();" onchange="locaaffic('locnewmen');">
    <option id="1">1</option>
    <option id="2">2</option>
    <option id="3">3</option>
    <select>


    cela ne fonctionne pas. j'ai impression que cela ne recupere rien...

  2. #2
    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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function locacalculpro(elt)
    {
    var pop=parseInt(elt.options[elt.selectedIndex].value)*12;
    alert(pop);
    }
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <select id="locduree" onchange="locacalculpro(this);locaaffic('locnewmen');">
    <option id="1">1</option>
    <option id="2">2</option>
    <option id="3">3</option>
    <select>

  3. #3
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    re,
    je ne peux pas utiliser

    function locacalculpro(elt)
    car cette fontion integre plein d'autre parametes qui ne fonctionne plus si je met (elt)

    fonction entiere

    function locacalculpro()
    {
    document.getElementById('formu').locmont.value=Number(document.getElementById('formu').loccumu.value);
    document.getElementById('formu').loctotal.value=Number(document.getElementById('formu').locmons.value)+Number(document.getElementById('formu').locmde.value)+Number(document.getElementById('formu').locautre.value);
    var pop=Number(document.getElementById('formu').locduree.value)*12;
    var pap=(1+(0.08/12));
    var pup=Math.round((Number(document.getElementById('formu').locmont.value)*(0.08/12))/(1 - Math.pow(pap,-pop))*100)/100;
    document.getElementById('formu').locnewmensu.value=pup;
    var pip=Math.round((Number(document.getElementById('formu').locnewmensu.value)*100)/Number(document.getElementById('formu').loctotal.value));
    document.getElementById('formu').locendet.value=pip;
    }
    Comme je suis novice, en javascript j'ai un peu de mal à tous integrer.

    je me sers ensuite de cette fonction pour remplir une partie de mon formulaire automatiquement comme :

    ...<br />Cumul du capital restant en consommation :<br />
    <input type="text" name="loccumu" size="10" onkeyup="locacalculpro();" />€
    <br />Mensualités en conso :<br />
    <input type="text" name="locmensu" size="10" />€
    <br />Loyer :<br />
    <input type="text" name="locloyer" size="10" />€
    <br />Montant du prêt :<br />
    <input type="text" name="locmont" size="10" />€
    <br />Durée (en année, de 1 à 12 ans max):<br />
    <select id="locduree" onchange="locacalculpro();locaaffic('locnewmen');">
    <option id="1">1</option>
    <option id="2">2</option>
    <option id="3">3</option>
    <select>...

  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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Je ne vois pas pourquoi ta fonction ne fonctionnerais plus en ajoutant un paramètre...
    En revanche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var pop=Number(document.getElementById('formu').locduree.value)*12;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var pop=parseInt(document.getElementById('formu').locduree.value)*12;

  5. #5
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    oh my god

    tu ne suis absolument pas les conseils qu'on te donne...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function locacalculpro()
    {
    document.getElementById('formu').locmont.value=Number(document.getElementById('formu').loccumu.value);
    document.getElementById('formu').loctotal.value=Number(document.getElementById('formu').locmons.value)+Number(document.getElementById('formu').locmde.value)+Number(document.getElementById('formu').locautre.value);
    var pop=Number(document.getElementById('formu').locduree.value)*12;
    var pap=(1+(0.08/12));
    var pup=Math.round((Number(document.getElementById('formu').locmont.value)*(0.08/12))/(1 - Math.pow(pap,-pop))*100)/100;
    document.getElementById('formu').locnewmensu.value=pup;
    var pip=Math.round((Number(document.getElementById('formu').locnewmensu.value)*100)/Number(document.getElementById('formu').loctotal.value));
    document.getElementById('formu').locendet.value=pip;
    }
    ce code est très lourd, très lent (pour peu que la page soit grosse) et très difficilement maintenable parce qu'on n'y voit rien e qu'on fait facilement des erreurs (parenthèses et autres)
    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
    function locacalculpro()
    {
      var formu = document.getElementById("formu");
      var locmons = parseInt(formu.locmons.value);
      var loccumu = parseInt(formu.loccumu.value);
      var locmde = parseInt(formu.locmde.value);
      var locautre = parseInt(formu.locautre.value);
      var locduree = parseInt(formu.locduree.value);
      var locnewmensu = parseInt(formu.locnewmensu.value);
     
      formu.locmont.value = loccumu;
      formu.loctotal.value = locmons+locmde+locautre;
      var pop = locduree*12;
      var pap = (1+(0.08/12));
      var pup = Math.round((parseInt(formu.locmont.value)*(0.08/12))/(1 - Math.pow(pap,-pop))*100)/100;
      formu.locnewmensu.value=pup;
      var pip = Math.round((locnewmensu*100)/parseInt(formu.loctotal.value));
      formu.locendet.value=pip;
    }
    on y voit déjà plus clair ou pas ?
    ensuite pour récupérer la valeur d'un select on demande tout simplement la value (comme pour un input text)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var toto = monSelect.value;
    // équivaut à monSelect.options[monSelect.selectedIndex].value

  6. #6
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    Bonjour et merci pour votre aide,
    desolé pour le code
    mais effectivement ta facon c'est beaucoup + clair et probablement plus legere. Mais je ne connais pas encore assez javascript pour en juger.

    Donc j'ai mis en place ton code à savoir :

    function locacalculpro()
    {
    var formu = document.getElementById("formu");
    var locmons = parseInt(formu.locmons.value);
    var loccumu = parseInt(formu.loccumu.value);
    var locmde = parseInt(formu.locmde.value);
    var locautre = parseInt(formu.locautre.value);
    var locduree = parseInt(formu.locduree.value);
    var locnewmensu = parseInt(formu.locnewmensu.value);

    formu.locmont.value = loccumu;
    formu.loctotal.value = locmons+locmde+locautre;
    var pop = locduree*12;
    var pap = (1+(0.08/12));
    var pup = Math.round((parseInt(formu.locmont.value)*(0.08/12))/(1 - Math.pow(pap,-pop))*100)/100;
    formu.locnewmensu.value=pup;
    var pip = Math.round((locnewmensu*100)/parseInt(formu.loctotal.value));
    formu.locendet.value=pip;
    }
    et un morceau de formulaire :

    ...<div id="loc" style="display: none">
    <br />Cumul du capital restant en consommation :<br />
    <input type="text" name="loccumu" size="10" onkeyup="locacalculpro();" />€
    <br />Mensualités en conso :<br />
    <input type="text" name="locmensu" size="10" />€
    <br />Loyer :<br />
    <input type="text" name="locloyer" size="10" />€
    <br />Montant du prêt :<br />
    <input type="text" name="locmont" size="10" />€
    <br />Durée (en année, de 1 à 12 ans max):<br />
    <select id="locduree" onchange="locacalculpro();locaaffic('locnewmen');">
    <option id="1">1</option>
    <option id="2">2</option>
    <option id="3">3</option>
    <select>
    <div id="locnewmen" style="display: none">
    <br />Nouvelle mensualité :<br />
    <input type="text" name="locnewmensu" size="10" />€...
    Mais cela ne fonctionne pas, lors de la saisie des données par l'internaute cela doit calculer automatiquement le champ "<input type="text" name="locnewmensu" size="10" />" mais la non.

    Cela affiche NaN dans le champ.

  7. #7
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    dans un 1er temps vérifie que ce que tu manipules dans localcalculpro ce sont bien des entiers (parseInt) ou des nombres à virgule (parseFloat) en les affichant avec alert.

    si l'un des champs est vide, le parseInt va te renvoyer NaN ou une exception (je ne sais plus)

    donc il faudrait penser à empêcher l'utilisateur d'entrer autre chose que des nombres, ou alors à filtrer dans localcalculpro, genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var nombre = 0;
    try{
     nombre = parseInt(champ.value);
    }
    catch(ex){
    }
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var nombre = 0;
    if (!isNaN(champ.value))
      nombre = parseInt(champ.value);
    }

  8. #8
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    j'ai testé, et je pense que le code ne trouve pas la valeur du select justement.

    le truc que j'essaie de faire depuis 3jours en gros
    ahhhhhhhhhhhhhhhhhhhhhhhhhhh.............

  9. #9
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    Citation Envoyé par spawns Voir le message
    je pense
    genre ?

  10. #10
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    la var pop n'est pas bonne.
    elle ne recupere pas la valeur du menu deroulant.

    c'est ca que je n'arrive pas faire

  11. #11
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    c'est normal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option id="1">1</option>
    tu n'as pas de value dans tes options

  12. #12
    Membre habitué Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Points : 193
    Points
    193
    Par défaut
    ok c'est bon j'ai trouvé

    c'est une erreur dans les variable

    var locduree= document.getElementById('locduree');
    var bbb= locduree.options[locduree.selectedIndex].text;
    Merci pour votre aide vous me sauvez la vie
    A bientôt

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

Discussions similaires

  1. Recuperer la valeur d'un select count()
    Par dodo91 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 20/05/2009, 16h37
  2. [MySQL] recuperer la valeur d'une select dans la meme page
    Par cat_war dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/05/2009, 20h19
  3. Réponses: 3
    Dernier message: 16/04/2009, 20h03
  4. [ASP.NET 1.1] Recuperer une valeur d'un SELECT généré en AJAX
    Par User.Anonymous dans le forum ASP.NET
    Réponses: 2
    Dernier message: 24/04/2008, 11h45
  5. Récupérer la valeur d'un select
    Par weed dans le forum Linux
    Réponses: 5
    Dernier message: 25/11/2006, 17h11

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