[Javascript] tags zetten om selectie in textarea

Pagina: 1
Acties:

  • marijn
  • Registratie: Juni 2001
  • Laatst online: 14-07 15:59
Hoe kan ik met IE alleen binnen een textarea tags toevoegen aan de selectie?

Want nu kan ik op heel de pagina tags toevoegen aan mijn selectie en dat wil ik niet.

Zie de code hieronder.


code:
1
2
3
4
5
    function iewrap(lft, rgt) {
     strSelection = document.selection.createRange().text;
     if (strSelection!="") 
          {document.selection.createRange().text = lft + strSelection + rgt;}
    }

  • whoami
  • Registratie: December 2000
  • Laatst online: 17:24
P&W -> W&G

check ook dit:Welkom in P&W (FAQ-28/11/2002)

[ Voor 79% gewijzigd door whoami op 19-12-2002 12:34 ]

https://fgheysels.github.io/


  • Hangloozz
  • Registratie: Juli 1999
  • Laatst online: 13-07 17:24

Hangloozz

{ @$%&# }

bij je functie nog even aangeven op welk element je het wilt toepassen :?


code:
1
2
function iewrap(lft, which, rgt){
strSelection = which.createRange().text;

daarna aanroepen vanuit je textarea-tag:
code:
1
onSelect="iewrap('linkermelp',this,'rechtermelp');"


denk ik...
zelf ff afmaken ;)

www.jurgroessen.nl


  • marijn
  • Registratie: Juni 2001
  • Laatst online: 14-07 15:59
Hangloozz schreef op 19 December 2002 @ 13:03:
bij je functie nog even aangeven op welk element je het wilt toepassen :?


code:
1
2
function iewrap(lft, which, rgt){
strSelection = which.createRange().text;

daarna aanroepen vanuit je textarea-tag:
code:
1
onSelect="iewrap('linkermelp',this,'rechtermelp');"


denk ik...
zelf ff afmaken ;)
Jammer dit werkt niet :(

En ik gebruik een linkje om er bijvoorbeeld aan te plakken

[ Voor 12% gewijzigd door marijn op 19-12-2002 15:08 ]


Verwijderd

Volgens mij kent alleen kent IE alleen document.selection. Ik ben ook bang dat het niet mogelijk is om te weten te komen wat de parentElement van een selectie is, dus dan zou het op een andere manier moeten. Als iemand het tegendeel kan aantonen, graag...

Je zou een variable op true kunnen zetten als de focus op het textarea is gezet (en weer op false op het moment dat de focus is verdwenen). Dan kun je dat als extra voorwaarde in je selectiefunctie gooien.

Net even zelf getest:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html>
<head>
<title>Untitled</title>
</head>
<body>
<script>
t=false;
function iewrap(lft, rgt) {
     strSelection = document.selection.createRange().text;
     if ((strSelection!="")&&(t==true)) 
          {document.selection.createRange().text=lft+strSelection+rgt;}
    }
</script>
<button onmousedown="iewrap('fd','ffd')">test</button>
<textarea onfocus="t=true" onblur="t=false;"></textarea>
sfdfdsfdsfds
</body>
</html>

Je moet kennelijk onmousedown gebruiken, want met onclick is de focus alweer verschoven. De tweede keer klikken werkt niet, dan zou je in de functie nog een keer de textarea moeten focussen.

Ik moet nog eens een keer kijken of het in Mozilla goed werkt nou, laatst keer dat ik het probeerde werkte het, behalve in textarea's :(

  • Hangloozz
  • Registratie: Juli 1999
  • Laatst online: 13-07 17:24

Hangloozz

{ @$%&# }

ik heb ff geen tijd om te gaan pielen met jouw code.
Dit heb ik pas toegepast om een enkelvoudige tag in te voeren en dat werkte naar behoren.
Ik zou zeggen: stoei er ff mee, misschien kun je de voor jou bruikbare elementen eruitvissen :)

HTML:
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
34
35
36
37
<html>
<head>
<title>melp</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<SCRIPT>
function storeCaret (textEl)
 {
  if (textEl.createTextRange) textEl.caretPos =
document.selection.createRange().duplicate();
 }
function insertAtCaret (textEl, text)
 {
  if (textEl.createTextRange && textEl.caretPos)
   {
    var caretPos = textEl.caretPos;
    caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
   }
  else
   textEl.value  = text;
 }
</SCRIPT>

</head>

<body>


<form name="form1" id="form1">
  
    <textarea cols="" rows="" name="bericht" wrap="soft" onSelect="storeCaret(this);" onClick="storeCaret(this);" onKeyUp="storeCaret(this);"></textarea>
    
    <input type="button" value="nieuwe alinea" style="font-family:verdana;" onClick="insertAtCaret(this.form.bericht,'&lt;p&gt;');this.form.bericht.focus();" >
    
  </form>   
</body>
</html>

sorry voor de major layout vernaggeling O-)

www.jurgroessen.nl

Pagina: 1