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 :

fonction rend visible champ appeler plusieurs fois


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 3
    Points : 4
    Points
    4
    Par défaut fonction rend visible champ appeler plusieurs fois
    bonjour j'ai un probleme concernant une fonction javascript qui permet d'afficher ou non un champ text.
    c'est un questionnaire avec reponse dans <select><option>. les questions viennent d'une table question et les reponse de la table réponse. il y a autant de champ <select><otpion> qu'il existe de réponse. donc une question appel plusieurs réponses. par contre dans chaque <select><option> j'affiche une option "autre" qui, si elle est selectionné, permet d'afficher un champs text de cette manière si l'utilisateur ne trouve pas la réponse qui lui correspond il peut formuler lui même sa réponse.
    voici ma fonction jav ascript qui permet de rendre ou non visible mon champ text si "autre" est cliké :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script language="javascript">
    function RendVisibleVille(texte)
    {
     
    if (texte=="autre")
    document.getElementById("test").style.visibility= 'visible';
    else
    document.getElementById("test").style.visibility= 'hidden';
    }
    </script>
    elle fonctionne et est appelée dans l'affichage d'une requete sql :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    $nbQuestion = 0;
     
     
    $lResult3 = $lCoupon->SelectQuestion();//ici on affiche la question et on recupere son id
    foreach ($lResult3 as $row3)
    {	$nbQuestion++; 
        echo '<p>';
        echo $row3['intitule_question'];
        echo '</p>';
        $question=$row3['id_question'];
     
        $lResult4 = $lCoupon->SelectReponse($question); //ici on affiche les reponse possible correspondante a ll'id de la question
     
    echo " <SELECT size=1  onchange='RendVisibleVille(this.value)' name='reponse".$nbQuestion."'> ";
            foreach ($lResult4 as $row4)
            {  
     
    		//affichage des reponse possible dasn option
            $reponse=$row4['id_reponse'];
     
            echo "\n".'<option value='.$row4['id_reponse'].'>'; 
            echo  $row4['intitule_reponse']; 
    		//echo $reponse;
            echo '</option>';
    		$recherche2=$_POST['recherche2'];
            }
    	//après on affiche 1 champ autre dans tou les <select>
    echo "<OPTION value='autre'>autre</OPTION></SELECT>";		
    ?><p>
    <div id="test" style="visibility:hidden">
    <input type="text" name="reponse"></div>
    </p>
    voici mon problème :
    on appel toujour cette fonction qlqsoit le "autre" selectionner : c'est a dire si je ckik sur le autre de la question numéro 4 le champ test saffichera a la fin de la première question. donc c toujour le mm champ text qui apparait puique la fonction appelé porte toujour le mme nom. il n'y a donc qu'un seul champ text qui est généré.
    voilà jespere que j'ai été assez clair.
    je vous remercie beaucoup pour votre

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    Citation Envoyé par djoyanna Voir le message
    voici mon problème :
    on appel toujour cette fonction qlqsoit le "autre" selectionner : c'est a dire si je ckik sur le autre de la question numéro 4 le champ test saffichera a la fin de la première question. donc c toujour le mm champ text qui apparait puique la fonction appelé porte toujour le mme nom. il n'y a donc qu'un seul champ text qui est généré.
    voilà jespere que j'ai été assez clair.
    je vous remercie beaucoup pour votre
    non pas compris ( j'ai relu plusieurs fois )
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 211
    Points : 196
    Points
    196
    Par défaut
    Si tu n'as qu'un seul champ pour tous tes SELECT, que se passe-t-il si qqun clique sur autre dans plus d'un SELECT??

  4. #4
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 98
    Points : 64
    Points
    64
    Par défaut
    j ai pas tout compris non plus, la personne ne peut cliquer que sur un seul "autre" ? Si c'est le cas quel est le probleme ? Sinon a part créer autant de champs texte que de "autre" je ne vois pas de solution donc si ce que tu veux c'est pouvoir réutiliser la meme fonction pour tes affichages passe le nom de ton div en argument, du genre :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    echo " <SELECT size=1  onchange='RendVisibleVille(this.value,question1)' name='reponse".$nbQuestion."'> ";
            foreach ($lResult4 as $row4)
            {  
              ................
            }
    	//après on affiche 1 champ autre dans tou les <select>
    echo "<OPTION value='autre'>autre</OPTION></SELECT>";		
    ?><p>
    <div id="question1" style="visibility:hidden">
    <input type="text" name="reponse"></div>
    </p>
     
    // et tu recommences la même chose avec un div qui porte un nom : question2 par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <script language="javascript">
    function RendVisibleVille(texte, nomDeMaDiv)
    {
     
    if (texte=="autre")
    document.getElementById(nomDeMaDiv).style.visibility= 'visible';
    else
    document.getElementById(nomDeMaDiv).style.visibility= 'hidden';
    }
    </script>

    J'ai pas tout compris donc ma réponse est peut etre totalement a coté de la plaque mais j 'ai fait ce que j ai pu pour comprendre lol dsl

Discussions similaires

  1. [Online] Appeler plusieurs fois la même fonction JS dans un form
    Par reitsab dans le forum Microsoft Dynamics CRM
    Réponses: 3
    Dernier message: 23/08/2011, 14h59
  2. Init d'un servlet appelé plusieurs fois ?
    Par Eylir dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/03/2008, 15h35
  3. Réponses: 22
    Dernier message: 02/01/2007, 09h14
  4. [C# 2.0] Pourquoi le load est-il appelé plusieurs fois ?
    Par Worldofdada dans le forum ASP.NET
    Réponses: 9
    Dernier message: 14/09/2006, 08h34

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