[javascript] recuperer un nom ds une variable

antic80 Messages postés 4877 Statut Contributeur -  
antic80 Messages postés 4877 Statut Contributeur -
bonjour

j'ai une textarea et un input de type text

j'aimerai quand je clic dans l'un ou dans l'autre pouvoir stocker le nom de l'element dans une variable

sma textarea s'appelle commentaire j'aimerai donc sauvegarder ds la variable valeur le nom commentaire

21 réponses

  • 1
  • 2
  1. XwZ Messages postés 94 Statut Membre
     
    salut,
    je ne crois pas avoir compri ton exemple mais je peu te donner un pti bout de code:
    function valeur_commetaire ()
    {
    commentaire = document.nom_du_formulaire.commentaire.value;
    }

    dans le textarea tu met :
    onclick="javascript:valeur_commentaire;"
    Voila, mon code enregistre la valeur du textearea quand tu clics dessus.
    0
  2. antic80 Messages postés 4877 Statut Contributeur 1 178
     
    ce n'est pas la valeur de la textarea mais son nom que je dois recuperer

    je t'explique en détails

    j'ai ce morceau de code

    function addText(instext) {
     var mess = document.form_question.ReponseAlternative;
            //IE support
            if (document.selection) {
                mess.focus();
                sel = document.selection.createRange();
                sel.text = instext;
                document.form_question.focus();
            }
            //MOZILLA/NETSCAPE support
            else if (mess.selectionStart || mess.selectionStart == "0") {
                var startPos = mess.selectionStart;
                var endPos = mess.selectionEnd;
                var chaine = mess.value;
    
                mess.value = chaine.substring(0, startPos) + instext + chaine.substring(endPos, chaine.length);
    
                mess.selectionStart = startPos + instext.length;
                mess.selectionEnd = endPos + instext.length;
                mess.focus();
            } else {
                mess.value += instext;
                mess.focus();
            }
        }
    


    j'aimerai remplacer cette ligne

    var mess = document.form_question.ReponseAlternative;

    car la le code ne marche que pour la textarea mais j'aimerai que ca marche aussi pour l'input

    donc si je clic sur l'input ce code dois s'executer pour l'input et si je clic sur la textarea pareil

    c pour ca que je cherche a modifier la variable mess en fonction de mon choix

    et au cas ou j'aimerai aussi savoir une chose

    ce code va me permettre d'inserer des symboles mathématiques
    (ex: &radic = racine carré)

    comment faire pour que ce code soit reconnu dans la textarea
    0
  3. XwZ Messages postés 94 Statut Membre
     
    alors rajoute un argument à ta fonction et modifie le nom du textearea par le nom que tu auras donnée à l'arguement par exemple :
    function addText(instext, nom_champ) {
     var mess = document.form_question.nom_champ;
            //IE support
            if (document.selection) {
                mess.focus();
                sel = document.selection.createRange();
                sel.text = instext;
                document.form_question.focus();
            }
            //MOZILLA/NETSCAPE support
            else if (mess.selectionStart || mess.selectionStart == "0") {
                var startPos = mess.selectionStart;
                var endPos = mess.selectionEnd;
                var chaine = mess.value;
    
                mess.value = chaine.substring(0, startPos) + instext + chaine.substring(endPos, chaine.length);
    
                mess.selectionStart = startPos + instext.length;
                mess.selectionEnd = endPos + instext.length;
                mess.focus();
            } else {
                mess.value += instext;
                mess.focus();
            }
        }
    


    et pour l'utilisation de la foction tu met les deux arguments tu laisse le premier, tu ne le touche pas et dans le deuxiemen tu mets le nom du champ à modifier.
    0
  4. antic80 Messages postés 4877 Statut Contributeur 1 178
     
    je comprend pas très bien ca

    et pour l'utilisation de la foction tu met les deux arguments tu laisse le premier, tu ne le touche pas et dans le deuxiemen tu mets le nom du champ à modifier.

    ca c le code des liens

    			print'<a href="#" onclick="addText(\' :) \');return(false)"><img src="http://www.editeurjavascript.com/forum/images/smiles/icon_smile.gif" alt="" border="0" /></a>';
    			print'<a href="#" onclick="addText(\' ;) \');return(false)"><img src="http://www.editeurjavascript.com/forum/images/smiles/icon_wink.gif" alt="" border="0" /></a>';
    
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. XwZ Messages postés 94 Statut Membre
     
    ok je vien de comprendre -_- donc dans le input tu met un onclick="javascript:changer_champ('le_nom_du_champ_input');"
    et dans le textarea tu met
    onclick="javascript:changer_champ('le_nom_du_champ_text_area');"
    et tu crées la fonction changer_champ de cette façon :
    function changer_champ(nom_du_champ) {
    nom_du_champ_actif=nomd_du_champ;
    }
    

    et dans la fonction addText tu met :
    function addText(instext) {
     champ_a_modifier = (isset(nom_du_champ_actif)) ? nom_du_champ_actif : 'le_nom_du_champ_par_defaut_que_tu_veux_modifier';
     var mess = document.form_question.champ_a_modifier;
            //IE support
            if (document.selection) {
                mess.focus();
                sel = document.selection.createRange();
                sel.text = instext;
                document.form_question.focus();
            }
            //MOZILLA/NETSCAPE support
            else if (mess.selectionStart || mess.selectionStart == "0") {
                var startPos = mess.selectionStart;
                var endPos = mess.selectionEnd;
                var chaine = mess.value;
    
                mess.value = chaine.substring(0, startPos) + instext + chaine.substring(endPos, chaine.length);
    
                mess.selectionStart = startPos + instext.length;
                mess.selectionEnd = endPos + instext.length;
                mess.focus();
            } else {
                mess.value += instext;
                mess.focus();
            }
        }
    


    je pense que cela devrait marcher.
    0
  7. antic80 Messages postés 4877 Statut Contributeur 1 178
     
    salut

    j'ai une erreur dans le code ca empeche ma page de s'afficher

    apparement ca viens de onclick

    print'<textarea rows="5" cols="30" name="ReponseAlternative" cols="20" onclick="changer_champ('ReponseAlternative');">'.$Demarche.'</textarea>';

    je te remet au cas ou le code des 2 fonctions avec mes parametres

    function changer_champ(nom_du_champ) {
    nom_du_champ_actif=nom_du_champ;
    }
    
    
    function addText(instext) {
     champ_a_modifier = (isset(nom_du_champ_actif)) ? nom_du_champ_actif : 'Reponse';
     var mess = document.form_question.champ_a_modifier;
            //IE support
            if (document.selection) {
                mess.focus();
                sel = document.selection.createRange();
                sel.text = instext;
                document.form_question.focus();
            }
            //MOZILLA/NETSCAPE support
            else if (mess.selectionStart || mess.selectionStart == "0") {
                var startPos = mess.selectionStart;
                var endPos = mess.selectionEnd;
                var chaine = mess.value;
    
                mess.value = chaine.substring(0, startPos) + instext + chaine.substring(endPos, chaine.length);
    
                mess.selectionStart = startPos + instext.length;
                mess.selectionEnd = endPos + instext.length;
                mess.focus();
            } else {
                mess.value += instext;
                mess.focus();
            }
        }
    


    encore merci pour ton aide
    0
  8. XwZ Messages postés 94 Statut Membre
     
    teste avec :

    print'<textarea rows="5" cols="30" name="ReponseAlternative" cols="20" onclick="changer_champ(\'ReponseAlternative\');">'.$Demarche.'</textarea>';

    j'avais oublier que tu le faisais en PHP.
    ;)
    0
  9. antic80 Messages postés 4877 Statut Contributeur 1 178
     
    encore moi

    la page s'affiche cette fois mais quand je clic sur les liens pour inserer le caractere ca ne marche pas

    je te file le code d'un des lien

    	print'<a href="#" onclick="addText(\' ;) \');return(false)"><img src="http://www.editeurjavascript.com/forum/images/smiles/icon_wink.gif" alt="" border="0" /></a>';
    


    ca me met ds la barre de statut en bas "erreur sur la page"
    0
  10. XwZ Messages postés 94 Statut Membre
     
    Le problème doit venir du isset j'ai pa l'impression que cette fonction existe alors teste :
    function addText(instext) {
     champ_a_modifier = nom_du_champ_actif;
     var mess = document.form_question.champ_a_modifier;
            //IE support
            if (document.selection) {
                mess.focus();
                sel = document.selection.createRange();
                sel.text = instext;
                document.form_question.focus();
            }
            //MOZILLA/NETSCAPE support
            else if (mess.selectionStart || mess.selectionStart == "0") {
                var startPos = mess.selectionStart;
                var endPos = mess.selectionEnd;
                var chaine = mess.value;
    
                mess.value = chaine.substring(0, startPos) + instext + chaine.substring(endPos, chaine.length);
    
                mess.selectionStart = startPos + instext.length;
                mess.selectionEnd = endPos + instext.length;
                mess.focus();
            } else {
                mess.value += instext;
                mess.focus();
            }
    }
    
    0
  11. antic80 Messages postés 4877 Statut Contributeur 1 178
     
    non ca ne marche tjs pas

    dis moi si tu as besoin d'un autre morceau de code
    0
  12. antic80 Messages postés 4877 Statut Contributeur 1 178
     
    au cas ou j'ai mis cette ligne dans la fonction

    document.write(mess); et j'obtient undefined
    0
  13. XwZ Messages postés 94 Statut Membre
     
    Bon j'ai testé ça (je teste avant de m'enfoncer encore plus :p) :
    <html>
    	<head>
    	<script type="text/javascript">	
    		document.form_question.champ_actif.value = "titire1";
    		function changer_champ(nom_du_champ) {
    			document.form_question.champ_actif.value = nom_du_champ;
    		}
    		
    		
    		function addText(instext) {
    			var nom_du_champ_actif = document.form_question.champ_actif.value;
    			var nom_du_champ_actif;
    			if(nom_du_champ_actif=="titre1")
    			{
    				mess = document.form_question.titre1;
    			}
    			else if(nom_du_champ_actif=="titre2")
    			{
    				mess = document.form_question.titre2;
    			}
    			else
    			{
    				mess = document.form_question.titre3;
    			}
    			//IE support
    			if (document.selection) {
    				mess.focus();
    				sel = document.selection.createRange();
    				sel.text = instext;
    				document.form_question.focus();
    			}
    			//MOZILLA/NETSCAPE support
    			else if (mess.selectionStart || mess.selectionStart == "0") {
    				var startPos = mess.selectionStart;
    				var endPos = mess.selectionEnd;
    				var chaine = mess.value;
    	
    				mess.value = chaine.substring(0, startPos) + instext + chaine.substring(endPos, chaine.length);
    	
    				mess.selectionStart = startPos + instext.length;
    				mess.selectionEnd = endPos + instext.length;
    				mess.focus();
    			} else {
    				mess.value += instext;
    				mess.focus();
    			}
    		}
    	</script>
    	</head>
    	<body>
    		<a href="javascript:void(0);" onclick="javascript:addText(' ;) ');return(false)"><img src="http://www.editeurjavascript.com/forum/images/smiles/icon_wink.gif" alt="" border="0" /></a>
    		<form action="" name="form_question">
    			<input type="hidden" name="champ_actif" />
    			<input type="text" name="titre1" onclick="javascript:changer_champ('titre1');" onselect="javascript:changer_champ('titre1');" />
    			<input type="text" name="titre2" onclick="javascript:changer_champ('titre2');" onselect="javascript:changer_champ('titre2');" />
    			<input type="text" name="titre3" onclick="javascript:changer_champ('titre3');" onselect="javascript:changer_champ('titre3');" />
    		</form>
    	</body>
    </html>


    Et ça marche impécable.
    Bon courage avec le javascript ;)
    0
  14. antic80 Messages postés 4877 Statut Contributeur 1 178
     
    alors soit je suis con ou il y a un bleme ailleurs

    j'ai tester ton code sur une page vierge en effet il marche mais voila en l'inserant ds mon code ca ne marche

    je te renvoie la fonction et les liens avec mes parametres

    <script type="text/javascript">
    
    		document.form_question.champ_actif.value = "ReponseAlternative";
    		function changer_champ(nom_du_champ) {
    			document.form_question.champ_actif.value = nom_du_champ;
    		}
    		
    		
    		function addText(instext) {
    			var nom_du_champ_actif = document.form_question.champ_actif.value;
    			var nom_du_champ_actif;
    			if(nom_du_champ_actif=="ReponseAlternative")
    			{
    				mess = document.form_question.ReponseAlternative;
    			}
    			else (nom_du_champ_actif=="Reponse")
    			{
    				mess = document.form_question.Reponse;
    			}
    		
    			//IE support
    			if (document.selection) {
    				mess.focus();
    				sel = document.selection.createRange();
    				sel.text = instext;
    				document.form_question.focus();
    			}
    			//MOZILLA/NETSCAPE support
    			else if (mess.selectionStart || mess.selectionStart == "0") {
    				var startPos = mess.selectionStart;
    				var endPos = mess.selectionEnd;
    				var chaine = mess.value;
    	
    				mess.value = chaine.substring(0, startPos) + instext + chaine.substring(endPos, chaine.length);
    	
    				mess.selectionStart = startPos + instext.length;
    				mess.selectionEnd = endPos + instext.length;
    				mess.focus();
    			} else {
    				mess.value += instext;
    				mess.focus();
    			}
    		}
    	</script>
    
    
    


    les liens

    <?php
    	if ($NumEssai<4)
    			{
    	  print"<td width='100'><div align='center'><label>Réponse</label></div></td>";
    		print'<input type="hidden" name="champ_actif">';
    
    	 print' <td width="150"><input name="Reponse" size="39" onclick="javascript:changer_champ('Reponse');" onselect="javascript:changer_champ('Reponse');" ></input></td>';
       
        print"</tr>";
        print"<tr>";
    
        	if($ReponseAlternative!="")
    				{
    
    			print"<td width='100'><div align='center'><label>Démarche</label></div></td>";
          		print"<td width='150'><div align='center'>";
    			print'<textarea rows="5" cols="30" name="ReponseAlternative" cols="20" onclick="javascript:changer_champ('ReponseAlternative');" onselect="javascript:changer_champ('ReponseAlternative');">'.$Demarche.'</textarea>';
    			echo "<br />";
    			echo "<br />";
    			print'<a href="javascript:void(0);" onclick="javascript:addText(' ;) ');return(false)"><img src="http://www.editeurjavascript.com/forum/images/smiles/icon_wink.gif" alt="" border="0"></a>';
    			print"</div>";
    			print"</td>";
    				}
    				  }
    	?>
    


    voila j'espere que c la derniere fois que je t'embete

    je precise que la encore la page ne s'affiche pas
    0
  15. XwZ Messages postés 94 Statut Membre
     
    je n'ai pas tout lu mais regarde du coté du else conditionnel
    else (nom_du_champ_actif=="Reponse")
    me semble pas que ça existe (j'en suis même sûr :p)
    0
  16. XwZ Messages postés 94 Statut Membre
     
    je te refais ton php parceque y a plein de fautes et tu peu ne pas utiliser les print
    <?php
    	if ($NumEssai<4)
    	{
    		?>
    		<td width="100"><div align="center"><label>Réponse</label></div></td>
    			<input type="hidden" name="champ_actif">
    		<td width="150"><input name="Reponse" size="39" onclick="javascript:changer_champ('Reponse');" onselect="javascript:changer_champ('Reponse');" ></input></td>
    		</tr>
    		<tr>
    		<?php
    			if(!empty($ReponseAlternative))
    			{
    				?>
    				<td width="100"><div align="center"><label>Démarche</label></div></td>
    				<td width="150"><div align="center">
    				<textarea rows="5" cols="30" name="ReponseAlternative" cols="20" onclick="javascript:changer_champ('ReponseAlternative');" onselect="javascript:changer_champ('ReponseAlternative');"><?php echo $Demarche; ?></textarea>
    				<br />
    				<br />
    				<a href="javascript:void(0);" onclick="javascript:addText(' ;) ');return(false)"><img src="http://www.editeurjavascript.com/forum/images/smiles/icon_wink.gif" alt="" border="0"></a>
    				</div>
    				</td>
    				<?php
    			}
    		?>
    		<?php
    	}
    ?>
    0
  17. antic80 Messages postés 4877 Statut Contributeur 1 178
     
    y'a du mieux sauf que en selectionnant l'un ou l'autre ca s'affiche toujours ds le meme (input text)
    0
  18. antic80 Messages postés 4877 Statut Contributeur 1 178
     
    up
    0
  19. XwZ Messages postés 94 Statut Membre
     
    salut,
    tu as quoi maintenant comme code ?
    0
  20. antic80 Messages postés 4877 Statut Contributeur 1 178
     
    pour la fonction

    <script type="text/javascript">
    
    document.form_question.champ_actif.value = "ReponseAlternative";
    		function changer_champ(nom_du_champ) {
    			document.form_question.champ_actif.value = nom_du_champ;
    		}
    		
    		
    		function addText(instext) {
    			var nom_du_champ_actif = document.form_question.champ_actif.value;
    			var nom_du_champ_actif;
    			if(nom_du_champ_actif=="ReponseAlternative")
    			{
    				mess = document.form_question.ReponseAlternative;
    			}
    			else (nom_du_champ_actif=="Reponse")
    			{
    				mess = document.form_question.Reponse;
    			}
    		
    			//IE support
    			if (document.selection) {
    				mess.focus();
    				sel = document.selection.createRange();
    				sel.text = instext;
    				document.form_question.focus();
    			}
    			//MOZILLA/NETSCAPE support
    			else if (mess.selectionStart || mess.selectionStart == "0") {
    				var startPos = mess.selectionStart;
    				var endPos = mess.selectionEnd;
    				var chaine = mess.value;
    	
    				mess.value = chaine.substring(0, startPos) + instext + chaine.substring(endPos, chaine.length);
    	
    				mess.selectionStart = startPos + instext.length;
    				mess.selectionEnd = endPos + instext.length;
    				mess.focus();
    			} else {
    				mess.value += instext;
    				mess.focus();
    			}
    		}
    	</script>
    
    
    
    
    
    


    pour les liens

    <?php
    	if ($NumEssai<4)
    	{
    		?>
    		<td width="100"><div align="center"><label>Réponse</label></div></td>
    			<input type="hidden" name="champ_actif">
    		<td width="150"><input name="Reponse" size="39" onclick="javascript:changer_champ('Reponse');" onselect="javascript:changer_champ('Reponse');" ></input></td>
    		</tr>
    		<tr>
    		<?php
    			if(!empty($ReponseAlternative))
    			{
    				?>
    				<td width="100"><div align="center"><label>Démarche</label></div></td>
    				<td width="150"><div align="center">
    				<textarea rows="5" cols="30" name="ReponseAlternative" cols="20" onclick="javascript:changer_champ('ReponseAlternative');" onselect="javascript:changer_champ('ReponseAlternative');"><?php echo $Demarche; ?></textarea>
    				<br />
    				<br />
    				<a href="javascript:void(0);"  onclick="javascript:addText(' ;) ');return(false)"><img src="http://www.editeurjavascript.com/forum/images/smiles/icon_wink.gif" alt="" border="0"></a>
    				</div>
    				</td>
    				<?php
    			}
    		?>
    		<?php
    	}
    ?>
    
    
    


    en fait que je selectionne l'input ou le textarea , quand je clic sur le lien le texte s'ajoute dans l'input
    0
  21. XwZ Messages postés 94 Statut Membre
     
    tu as laisser le else (nom_du_champ_actif=="Reponse")
    essay avec :
    <script type="text/javascript">
    
    document.form_question.champ_actif.value = "ReponseAlternative";
    		function changer_champ(nom_du_champ) {
    			document.form_question.champ_actif.value = nom_du_champ;
    		}
    		
    		
    		function addText(instext) {
    			var nom_du_champ_actif = document.form_question.champ_actif.value;
    			var nom_du_champ_actif;
    			if(nom_du_champ_actif=="ReponseAlternative")
    			{
    				mess = document.form_question.ReponseAlternative;
    			}
    			else
    			{
    				mess = document.form_question.Reponse;
    			}
    		
    			//IE support
    			if (document.selection) {
    				mess.focus();
    				sel = document.selection.createRange();
    				sel.text = instext;
    				document.form_question.focus();
    			}
    			//MOZILLA/NETSCAPE support
    			else if (mess.selectionStart || mess.selectionStart == "0") {
    				var startPos = mess.selectionStart;
    				var endPos = mess.selectionEnd;
    				var chaine = mess.value;
    	
    				mess.value = chaine.substring(0, startPos) + instext + chaine.substring(endPos, chaine.length);
    	
    				mess.selectionStart = startPos + instext.length;
    				mess.selectionEnd = endPos + instext.length;
    				mess.focus();
    			} else {
    				mess.value += instext;
    				mess.focus();
    			}
    		}
    	</script>
    0
  • 1
  • 2