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

résuperer la selection dans une variable (on y est presque...) [JS] - HTML/CSS - Programmation

Marsh Posté le 29-04-2003 à 15:18:56    

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
Reply

Marsh Posté le 29-04-2003 à 15:18:56   

Reply

Marsh Posté le 29-04-2003 à 15:29:02    

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

Reply

Marsh Posté le 29-04-2003 à 15:34:06    

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 ??

Reply

Marsh Posté le 29-04-2003 à 15:39:05    

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.

Reply

Marsh Posté le 30-04-2003 à 12:23:20    

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 ??

Reply

Marsh Posté le 02-05-2003 à 03:41:26    

oui ?? non ?? [:tilleul]

Reply

Marsh Posté le 05-05-2003 à 15:18:01    

up up up !

Reply

Marsh Posté le 05-05-2003 à 15:21:16    

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

Reply

Marsh Posté le 05-05-2003 à 15:23:37    

hop en fait ca marche tjs pas :(

Reply

Marsh Posté le 05-05-2003 à 16:25:36    

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.  :(

Reply

Marsh Posté le 05-05-2003 à 16:25:36   

Reply

Marsh Posté le 05-05-2003 à 16:41:18    

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

Reply

Marsh Posté le 05-05-2003 à 18:51:28    

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...

Reply

Marsh Posté le 05-05-2003 à 19:32:55    

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
Reply

Marsh Posté le 05-05-2003 à 22:45:05    

ok, thx

Reply

Marsh Posté le 06-05-2003 à 09:08:01    

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
Reply

Marsh Posté le 06-05-2003 à 09:33:44    

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.   }

Reply

Marsh Posté le 06-05-2003 à 15:37:33    

essaye ça
 

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

Reply

Marsh Posté le 06-05-2003 à 15:39:39    

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...

Reply

Marsh Posté le 06-05-2003 à 15:50:46    

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>

Reply

Marsh Posté le 06-05-2003 à 20:57:09    

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....

Reply

Marsh Posté le 07-05-2003 à 10:21:48    

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>

 
 
?

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed