Avatar billede jl4511 Nybegynder
28. marts 2005 - 11:53 Der er 11 kommentarer og
1 løsning

Indsætte tekst i TEXTAREA ved cursor?

Hvordan indsætter jeg en tekststump i et textarea, der hvor cursoren stod/står?
Spørgsmålet går vel egentlig på, hvordan jeg finder cursorens placering i textarea'et.
Avatar billede jonashn Nybegynder
28. marts 2005 - 12:15 #1
Dette spørsmål er lavet over 50 gange :-) prøv at søge for "textarea cursor" i fritekstsøgning i javascript :-)
Avatar billede jl4511 Nybegynder
28. marts 2005 - 14:17 #2
Ok - det var et brugbart svar.
Jeg fandt noget kode og fik det til at virke.

Nu kommer så næste problem:
Jeg har TO filer (test1.html og test2.html)
I test1 har vi TEXTAREA, og i test2 (som åbnes af test1) skal man så vælge et billede, og så skal img-tag skal indsættes i TEXTAREA (i test1).

Men nu smider den bare tag'et bagest i teksten. Den mister altså track på hvor cursoren stod.

Jeg smider gerne 200 point efter en brugbar løsning (opretter nyt sp. når det er klaret).

Her er koden til de 2 filer:

test1.html:
<html>
<head>
<title>TEST 1</title>
<script>
var fokus = false;     // Required in the insertText function - used because of IE
var cursorpos;             // Required for mozPlaceCursor
/**
* Inserts text in a form-element
* @param frmElm A form-element, for instance a textarea
* @param text A string with the text which should be inserted
*/
function insertText(frmElm,text)
{
    if (typeof frmElm.selectionEnd == "number")
    {
      cursorpos = frmElm.selectionStart+text.length;
    frmElm.value = frmElm.value.substring(0,frmElm.selectionStart)+text+frmElm.value.substring(frmElm.selectionEnd);
    } // For mozilla
    else if (document.selection && fokus) {r = document.selection.createRange();r.text = text;} // For IE
    else frmElm.value += text; // For everyone else
}
/**
* Places the cursor in a certain position.
* The variable cursorpos is required
* Mozilla only (or other gecko-browsers)
* @param frmElm The form-element
*/
function mozPlaceCursor(frmElm)
{
  if (typeof frmElm.selectionEnd == "number" && cursorpos != undefined)
    {
    frmElm.setSelectionRange(cursorpos,cursorpos);
  }
}
</script>
</head>
<body>

<form name='form01' method='post'>
<textarea NAME="felt" rows=8 cols=40 onfocus="fokus = true;" onblur="fokus = false;"></textarea>
<br>
<!--- Denne input virker fint -->
<input type="button" value="<img src='pict3.jpg'>" onmousedown="insertText(this.form.felt,this.value);" onmouseup="this.form.felt.focus();mozPlaceCursor(this.form.felt);" />

<!--- Men når jeg åbner et nyt vindue indsætter den den nye tekst i slutningen? -->
<br><br>
<a href='test2.html' target=_blank>Indsæt billede</a>
<br>(Åbner et nyt vindue)

</form>
</body>
</html>

---------------------------------------------------------------------------
test2.html:
<html>
<head>
<title>TEST 2</title>
</head>
<body>
<table>
<tr onmousedown="window.opener.insertText(window.opener.form01.felt,image1.value);" onmouseup="window.opener.form01.felt.focus();mozPlaceCursor(window.opener.form01.felt);" style='background-color:#cccccc;cursor:pointer;'>
<td>
    Billede 1
<INPUT ID="image1" VALUE="<img src='images/pict1.jpg'>" TYPE="hidden">
</td>
</tr>
<tr onmousedown="window.opener.insertText(window.opener.form01.felt,image2.value);" onmouseup="window.opener.form01.felt.focus();mozPlaceCursor(window.opener.form01.felt);" style='background-color:#cccccc;cursor:pointer;'>
<td>
    Billede 2
<INPUT ID="image2" VALUE="<img src='images/pict2.jpg'>" TYPE="hidden">
</td>
</tr>
</table>
</body>
</html>
Avatar billede jl4511 Nybegynder
28. marts 2005 - 14:22 #3
Jonashn..... smid lige et svar på det første spørgsmål, så du kan få de 60 point.
Avatar billede jonashn Nybegynder
28. marts 2005 - 18:39 #4
Sågerne
Avatar billede jonashn Nybegynder
28. marts 2005 - 18:54 #5
...Og lige en kommentar: Hvis type="text/javascript" er udeladt i en <script> tagget er det god kodevane at indsætte det :-)
Avatar billede jonashn Nybegynder
28. marts 2005 - 18:55 #6
Hov - fejl: "en" skulle ikke være der :-)
Avatar billede jonashn Nybegynder
28. marts 2005 - 18:58 #7
Skal det være kompatibelt med andet en IE?
Avatar billede jl4511 Nybegynder
28. marts 2005 - 19:11 #8
Ja ja... der er vaner - og så er der dovenskab :-)
Det er jo bare et test-eks.

Det ville være dejligt hvis det også fungerede i FireFox, men det er ikke noget krav... i første omgang. Har du evt. en løsning undervejs?

PS: Jeg mangler stadig et SVAR fra dig :O)
(vælg svar istedet for kommentar)
Avatar billede jonashn Nybegynder
29. marts 2005 - 16:45 #9
Kikset - Her er svaret :-)
Avatar billede jonashn Nybegynder
29. marts 2005 - 16:46 #10
Hmm... Jeg ved ikke hvad problemet kan være - Måske en af eksperterne (De rigtige :-) ) kan hjælpe?
Avatar billede jl4511 Nybegynder
29. marts 2005 - 16:53 #11
Det er ok - jeg har fundet en løsning der virker tilfredsstillende, så jeg lukker her.
Tak for hjælpen :-)
Avatar billede jonashn Nybegynder
29. marts 2005 - 16:59 #12
Det var så lidt! Og tak for de mange point :-D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester