login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Invoegen op cursor positie

Offline Maarten - 16/10/2005 19:04
Avatar van MaartenErelid Hey,

ik was wat aan het prutsen om, bij het aanklikken van een smiley of tag, de string in te voegen in de textarea op de plaats waar de cursor zich bevindt.

Na wat googlen bekwam ik het volgende:
  1. function invoegen(txt) {
  2. begin = '';
  3. eind = '';
  4.  
  5. if (txtveld.createTextRange) {
  6. var text;
  7. txtveld.focus(txtveld.caretPos);
  8. txtveld.caretPos = document.selection.createRange().duplicate();
  9.  
  10. if(txtveld.caretPos.text.length > 0) {
  11. txtveld.caretPos.text = begin + txtveld.caretPos.text + eind;
  12. } else {
  13. txtveld.caretPos.text = begin + " " + txt + " " + eind;
  14. }
  15. } else {
  16. txtveld.value += begin + txt + eind;
  17. }
  18. }


Maar dit werkt enkel in Internet Explorer (of toch niet in Firefox, ik heb slechts die 2 browsers).

Iemand een idee / voorstel?

3 antwoorden

Gesponsorde links
Offline Gerard - 16/10/2005 19:13
Avatar van Gerard Ouwe rakker sta je dan met je 'o zo goede' ubb functie, veel beter als die van hier :D

ik zal wel eens googlen
Offline NCube - 16/10/2005 19:14 (laatste wijziging 16/10/2005 19:15)
Avatar van NCube HTML beginner
  1. //--------------------------------------------
  2. // GENERAL INSERT FUNCTION
  3. //--------------------------------------------
  4. // ibTag: opening tag
  5. // ibClsTag: closing tag, used if we have selected text
  6. // isSingle: true if we do not close the tag right now
  7. // return value: true if the tag needs to be closed later
  8.  
  9. //
  10.  
  11. function doInsert(ibTag, ibClsTag, isSingle)
  12. {
  13. var isClose = false;
  14. var obj_ta = fombj.Post;
  15.  
  16. //----------------------------------------
  17. // It's IE!
  18. //----------------------------------------
  19. if ( (ua_vers >= 4) && is_ie && is_win)
  20. {
  21. if (obj_ta.isTextEdit)
  22. {
  23. obj_ta.focus();
  24. var sel = document.selection;
  25. var rng = sel.createRange();
  26. rng.colapse;
  27. if((sel.type == "Text" || sel.type == "None") && rng != null)
  28. {
  29. if(ibClsTag != "" && rng.text.length > 0)
  30. ibTag += rng.text + ibClsTag;
  31. else if(isSingle)
  32. isClose = true;
  33.  
  34. rng.text = ibTag;
  35. }
  36. }
  37. else
  38. {
  39. if(isSingle)
  40. {
  41. isClose = true;
  42. }
  43.  
  44. obj_ta.value += ibTag;
  45. }
  46. }
  47. //----------------------------------------
  48. // It's MOZZY!
  49. //----------------------------------------
  50.  
  51. else if ( obj_ta.selectionEnd )
  52. {
  53. var ss = obj_ta.selectionStart;
  54. var st = obj_ta.scrollTop;
  55. var es = obj_ta.selectionEnd;
  56.  
  57. if (es <= 2)
  58. {
  59. es = obj_ta.textLength;
  60. }
  61.  
  62. var start = (obj_ta.value).substring(0, ss);
  63. var middle = (obj_ta.value).substring(ss, es);
  64. var end = (obj_ta.value).substring(es, obj_ta.textLength);
  65.  
  66. //-----------------------------------
  67. // text range?
  68. //-----------------------------------
  69.  
  70. if (obj_ta.selectionEnd - obj_ta.selectionStart > 0)
  71. {
  72. middle = ibTag + middle + ibClsTag;
  73. }
  74. else
  75. {
  76. middle = ibTag + middle;
  77.  
  78. if (isSingle)
  79. {
  80. isClose = true;
  81. }
  82. }
  83.  
  84. obj_ta.value = start + middle + end;
  85.  
  86. var cpos = ss + (middle.length);
  87.  
  88. obj_ta.selectionStart = cpos;
  89. obj_ta.selectionEnd = cpos;
  90. obj_ta.scrollTop = st;
  91.  
  92.  
  93. }
  94. //----------------------------------------
  95. // It's CRAPPY!
  96. //----------------------------------------
  97. else
  98. {
  99. if (isSingle)
  100. {
  101. isClose = true;
  102. }
  103.  
  104. obj_ta.value += ibTag;
  105. }
  106.  
  107. obj_ta.focus();
  108.  
  109. return isClose;
  110. }

Dit is de bbcode functie van invisionboard
Let op het "Mozzy" gedeelte 
Offline Maarten - 16/10/2005 19:17
Avatar van Maarten Erelid @Ncube: bedankt, maar gelukkig ben ik überslim 
  1. function invoegen(waarde) {
  2. if (document.selection) {
  3. // IE
  4. txtveld.focus();
  5. sel = document.selection.createRange();
  6. sel.text = waarde;
  7. } else if (txtveld.selectionStart || txtveld.selectionStart == 0) {
  8. // Mozilla
  9. var start = txtveld.selectionStart;
  10. var eind = txtveld.selectionEnd;
  11. txtveld.value = txtveld.value.substring(0,start)
  12. + waarde
  13. + txtveld.value.substring(eind,txtveld.value.length);
  14. } else {
  15. txtveld.value += waarde;
  16. }
  17. }


Dit werkt, voor moest iemand het intresseren 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.21s