Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2037 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [JS] résuperer la selection dans une variable (on y est presque...)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JS] résuperer la selection dans une variable (on y est presque...)

n°376344
xkamui
Their Destiny Was Foreordained
Posté le 29-04-2003 à 15:18:56  profilanswer
 

je voudrais ajouter du texte sur un évenement onclick.
 
genre :  

Code :
  1. function add_attribut(a,b){
  2. var txt = document.getElementById("main_texte" );
  3. txt.value = a + txt.value + b;
  4. txt.focus();
  5. }
  6. <a href="javascript:add_attribut('','');">bold</a>


 
ceci marche très bien, pour ce que c'est programmé... c'est à dire qu'il me met '[ b ]' et '[ / b ]' au tout début de mon textarea et tout à la fin.
 
je voudrais maintenant qu'il me mette ces même attribut, mais sur le texte selectionné dans ce même textarea.
 
comment faire comprendre au js qu'il faut prendre ce qui est en bleu (par défaut sur ie) et y attahcer les balise et non tout le textarea.
 
je ne vois pas comment, mais attend impatiemment vos lumière!
 
allez, @+
Kamui


Message édité par xkamui le 06-05-2003 à 20:57:41
mood
Publicité
Posté le 29-04-2003 à 15:18:56  profilanswer
 

n°376386
fastclemmy
(re-)Dictateur en plastique
Posté le 29-04-2003 à 15:29:02  profilanswer
 

Cf. source de ce forum avec la zone de saisie pour la réponse aux posts ;)

n°376410
xkamui
Their Destiny Was Foreordained
Posté le 29-04-2003 à 15:34:06  profilanswer
 

c'est ce que j'ai fait, mais c'est un peu trop complexe pour moi et j'avoue ne pas avoir ni trouvé, ni compris.
 
qq'un pour aider un perdu ??

n°376424
fastclemmy
(re-)Dictateur en plastique
Posté le 29-04-2003 à 15:39:05  profilanswer
 

Code :
  1. <html>
  2. <head>
  3. <title>Untitled</title>
  4. <script language="javascript">
  5. <!--
  6. var textRange;
  7. function saveRange() {
  8. textRange = document.selection.createRange();
  9. }
  10. function insertTags(event) {
  11. if (document.all) {
  12.   textRange.text="<b>"+textRange.text+"</b>";
  13. }
  14. document.editor.notes.focus();
  15. }
  16. //-->
  17. </script>
  18. </head>
  19. <body>
  20. <form name="editor">
  21. <textarea name="notes" rows="20" cols="80" onBlur="saveRange()"></textarea><br>
  22. <input type="button" value="INSERT BOLD TAGS" onclick="insertTags()">
  23. <input type="submit">
  24. </form>
  25. <br><br>
  26. </body>
  27. </html>

 
 
IE only I think.

n°378005
xkamui
Their Destiny Was Foreordained
Posté le 30-04-2003 à 12:23:20  profilanswer
 

merci !!! c'est presque bon !!!, voilà ce que ça donne chez moi :  
 
js :

Code :
  1. var txt_sel;
  2. function sav_sel() {
  3. txt_sel = document.selection.createRange();
  4. }
  5. }
  6. function add_attribut(a,b){
  7. var txtarea = document.getElementById("main_texte" );
  8. if (txt_sel!="" ){
  9.  txt_sel.text  = a + txt_sel.text + b;
  10. }else{
  11.  txtarea.value = ab;
  12. }
  13. txtarea.focus();
  14. }


 
et côté lien + formulaire :

Code :
  1. <a href="javascript:add_attribut('','');">bold</a>
  2. <a href="javascript:add_attribut('','');">italic</a>
  3. <form>
  4. <textarea id="main_texte" name="texte" cols="30" rows="8" class="" onblur="sav_sel();"></textarea>
  5. </form>


 
maintenant, le problème persistant est que, quand je click sur 'bold' sans avoir selectionné du texte, il ajoute bien '[ b ][ / b ]' mais juste avant bold.... ce qui me donne un lien du type :  
<a href="javascript:add_attribut('','';);">[ b ][ / b ]bold</a>
 
alors que je lui demande bien de me les mettre dans mon textarea... comment ce fait-ce ??

n°380094
xkamui
Their Destiny Was Foreordained
Posté le 02-05-2003 à 03:41:26  profilanswer
 

oui ?? non ?? [:tilleul]

n°382814
Professeur​Thibault
Apprenti Dessinateur.
Posté le 05-05-2003 à 15:18:01  profilanswer
 

up up up !

n°382835
Professeur​Thibault
Apprenti Dessinateur.
Posté le 05-05-2003 à 15:21:16  profilanswer
 

hop auto reponse express :  
il suffit de pas faire un input, mais de mettre une image à la place :)

n°382843
Professeur​Thibault
Apprenti Dessinateur.
Posté le 05-05-2003 à 15:23:37  profilanswer
 

hop en fait ca marche tjs pas :(

n°382987
Professeur​Thibault
Apprenti Dessinateur.
Posté le 05-05-2003 à 16:25:36  profilanswer
 

j'ai le meme probleme que xkamui, cad ke si aucun texte n'est sélectionné, les balises se rajoutent en dehors de la textarea.  :(

mood
Publicité
Posté le 05-05-2003 à 16:25:36  profilanswer
 

n°383018
Professeur​Thibault
Apprenti Dessinateur.
Posté le 05-05-2003 à 16:41:18  profilanswer
 

résolu...
bon ok ct tout con, juste un test de plus, ms le JS me fait peur  :sweat:  merci à moi même !

n°383240
xkamui
Their Destiny Was Foreordained
Posté le 05-05-2003 à 18:51:28  profilanswer
 

ProfesseurThibault a écrit :

résolu...
bon ok ct tout con, juste un test de plus, ms le JS me fait peur  :sweat:  merci à moi même !


 
et tu as pas la source des fois...

n°383291
Professeur​Thibault
Apprenti Dessinateur.
Posté le 05-05-2003 à 19:32:55  profilanswer
 

xkamui a écrit :


 
et tu as pas la source des fois...


 
je te la file demain, de retour au taf :)


---------------
Book, works, et news : http://www.reuno.net
n°383454
xkamui
Their Destiny Was Foreordained
Posté le 05-05-2003 à 22:45:05  profilanswer
 

ok, thx

n°383738
Professeur​Thibault
Apprenti Dessinateur.
Posté le 06-05-2003 à 09:08:01  profilanswer
 

voilà :

Code :
  1. function insertBold(event)
  2. {   
  3.     if (document.all)
  4. { if (textRange.text!="" )
  5.         {
  6.   textRange.text="<b>"+textRange.text+"</b>";
  7.      }
  8. }
  9.     document.editor.notes.focus();
  10. }


Je précise que mon bouton n'est pas un input mais une image, donc le bug que tu avais persiste toujours, mais maintenant il est impossible d'insérer ca sans avoir sélectionné quelquechose.


Message édité par ProfesseurThibault le 06-05-2003 à 09:09:06
n°383779
Professeur​Thibault
Apprenti Dessinateur.
Posté le 06-05-2003 à 09:33:44  profilanswer
 

Par contre, j'ai un autre probleme now :
je voudrais insérer un smiley dans mon textarea, mais pr le moment je n'arrive qu'à l'insérer à la fin. Mon code :

Code :
  1. function addbalise(chemin)
  2. // Chemin étant par exemple ":bounce: ...
  3.   {
  4.     var commentaire = document.editor.notes.value;
  5.     withsmiley = commentaire+chemin;
  6.     document.editor.notes.value=withsmiley;
  7.   }

n°384542
xkamui
Their Destiny Was Foreordained
Posté le 06-05-2003 à 15:37:33  profilanswer
 

essaye ça
 

Code :
  1. function addbalise(chemin)
  2. // Chemin étant par exemple ":bounce: ...  
  3. {
  4.    document.editor.notes.value += chemin;
  5. }

n°384545
xkamui
Their Destiny Was Foreordained
Posté le 06-05-2003 à 15:39:39  profilanswer
 

moi, je voudrais savoir comment récupérer dans une variable js la valeur selectionnée dans mon textarea ou dans mon input.text
 
j'ai pas trop compris ce qu'était le 'textRange', 'createRange();' ou encore le 'saveRange();'.
 
quelqu'un pourrait m'expliquer juste comment garder la selection... sur un onblur donc...

n°384583
fastclemmy
(re-)Dictateur en plastique
Posté le 06-05-2003 à 15:50:46  profilanswer
 

Code :
  1. <html>
  2.   <head>
  3.   <title>Untitled</title>
  4.   <script language="javascript">
  5.   <!--
  6.   var textRange;
  7.   function saveRange() {
  8.      textRange = document.selection.createRange();
  9.   }
  10.   function petitTest() {
  11.      alert(textRange.text);   
  12.   }
  13.  
  14.   function insertTags(event) {
  15.    
  16.     if (document.all) {
  17.         textRange.text="<b>"+textRange.text+"</b>";
  18.     }
  19.     document.editor.notes.focus();
  20.   }
  21.  
  22.   //-->
  23.   </script>
  24.   </head>
  25.  
  26.   <body>
  27.   <form name="editor">
  28.   <textarea name="notes" rows="20" cols="80" onBlur="saveRange()"></textarea><br>
  29.   <input type="button" value="INSERT BOLD TAGS" onclick="insertTags()">
  30.   <input type="button" value="TEST TEXTERANGE" onclick="petitTest()">
  31.   </form>
  32.   <br><br>
  33.  
  34.   </body>
  35.   </html>

n°385109
xkamui
Their Destiny Was Foreordained
Posté le 06-05-2003 à 20:57:09  profilanswer
 

on y est presque, en effet !!!
 
voici le code :  

Code :
  1. <html><head><title>test</title>
  2. <script language="javascript">
  3. // Declaration de la variable de selection
  4. var textRange;
  5. // Sauvegarde de la selection
  6. function saveRange(){
  7. textRange = document.selection.createRange();
  8. }
  9. // Ajout du code
  10. function insertTags(code,id){
  11. if (textRange.text == "" ){
  12.  document.getElementById(id).value += "[" + code + "][/" + code + "]";
  13. }else{
  14.  textRange.text="[" + code + "]"+textRange.text+"[/" + code + "]";
  15. }
  16. document.getElementById(id).focus();
  17. }
  18. </script>
  19. </head><body>
  20. <form>
  21. <textarea rows="20" cols="80" id="txt" onBlur="saveRange()"></textarea><br>
  22. <input type="button" value="BOLD" onclick="insertTags('b','txt')">
  23. </form>
  24. </body></html>


(Merci fastclemmy)
 
voici le pb persistant :
si je clique sur le bouton 'bold' avant d'avoir cliqué dans mon champs texte, il me met une erreur... en me disant que 'textRange.texte' à la valeur nulle ou n'est pas un objet... pourtant, c'est bien définie en haut... en variable globale...
 
donc, je planche encore un tout petit peu, mais suis bien plus loin qu'au début, tout en ayant compris pas mal de choses... vous pourriez me donner un dernier petit coup de pouce pour ce post svp....

n°385507
fastclemmy
(re-)Dictateur en plastique
Posté le 07-05-2003 à 10:21:48  profilanswer
 

Code :
  1. <html><head><title>test</title>
  2.  
  3.   <script language="javascript">
  4.  
  5.   // Declaration de la variable de selection
  6.   var textRange;
  7.  
  8.   // Sauvegarde de la selection
  9.   function saveRange(){
  10.      textRange = document.selection.createRange();
  11.   }
  12.  
  13.   // Ajout du code
  14.   function insertTags(code,id){
  15.   //alert("textRange " + textRange);
  16.   //alert("textRange.text " + textRange.text);
  17.     if (textRange) {
  18.        if (textRange.text == "" ){
  19.           document.getElementById(id).value += "[" + code + "][/" + code + "]";
  20.          }else{
  21.           textRange.text="[" + code + "]"+textRange.text+"[/" + code + "]";
  22.        }
  23.        document.getElementById(id).focus();
  24.      }else{
  25.        document.getElementById(id).value="[" + code + "][/" + code + "]";
  26.      }
  27.   }
  28.    
  29.   </script>
  30.  
  31.   </head><body>
  32.  
  33.   <form>
  34.   <textarea rows="20" cols="80" id="txt" onBlur="saveRange()"></textarea><br>
  35.   <input type="button" value="BOLD" onclick="insertTags('b','txt')">
  36.   </form>
  37.  
  38.   </body></html>

 
 
?

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [JS] résuperer la selection dans une variable (on y est presque...)

 

Sujets relatifs
[HTML&ASP] Reprise d'une variable d'un form dans un textareaboucle while indentifiant variable
[Python] Visibilité d'une variableUtiliser une variable dans une requête SQL
Accéder à une variable d'une unité, dans une autre unité[ASM] Afficher un variable dw
Déclarer un tableau à l'aide d'une variable..[PHP] Problème d'upload et affichage de variable
tableaux à dimension variable imbriqués :/lancer une commande avec une variable comme paramètre
Plus de sujets relatifs à : [JS] résuperer la selection dans une variable (on y est presque...)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR