Infoga tecken på specifik position

JavaScript

5 svar · 342 visningar · startad av Kim

Medlem sedan jan. 20007 697 inlägg
Trådstart#1

Finns det någon möjlighet att infoga en förutbestämd sträng vid en viss position i en textarea? Det är så att jag har en ruta där en massa text skrivs in för att redigera tidigare skrivna texter. Bredvid rutan finns en knapp och vid ett klick på den så ska en <br>-tagg stoppas in där markören befinner sig. Det duger alltså inte med att slänga in taggen sist i arean eftersom det kan vara en redigering av en redan befintlig text.

Jaja, ni kanske förstår. Hoppas att någon kan hjälpa mig. :)

Medlem sedan jan. 20007 697 inlägg
#2

Ingen som har en aning?

Medlem sedan jan. 20007 697 inlägg
#3

Jaja, med ett par funktioner som jag själv fick knåpa ihop så löste det sig. Men jag kanske har missat någon befintlig sak som fixar det där själv?

Medlem sedan sep. 2001269 inlägg
#4

Hur gjorde du?

Är intereserad!!!

Medlem sedan jan. 20007 697 inlägg
#5
<script language="javascript">

function storeCaret(textArea) {

    if(textArea.createTextRange) {
        textArea.caretPos = document.selection.createRange().duplicate();
    }
}

function insertAtCaret(textArea, text) {

    if(textArea.createTextRange && textArea.caretPos) {

        caretPos = textArea.caretPos;
        caretPos.text =
          caretPos.text.charAt(caretPos.text.length  - 1) == ' ' ?
            '<' + text + '>\n ' : '<' + text + '>\n' ;
        textArea.focus();
    } else {
        textArea.value = text;
    }
}
</script>

Lägg in dessa funktioner längst upp i dokumentet.

Så här ser HTML-koden ut för att hela tiden hålla aktuell position samt för att klicka på en knapp och då infoga något på rätt ställe.

<TEXTAREA NAME="text" ROWS="12" COLS="36" WRAP="virtual" onselect="storeCaret(this)" onclick="storeCaret(this)" onkeyup="st\
oreCaret(this)"></TEXTAREA>

<br><br>

<input type="button" name="brknapp" onClick="javascript:insertAtCaret(text, 'p');" value="P" style="width: 40; font-size: 7px;">

Lycka till! :)

Medlem sedan sep. 2001269 inlägg
#6

Oj

Det var tjusigt.

Men om vi säger att jag skulle vilja lägga in t.ex. en bild; hur skulle jag göra då?

Jag skulle altså vilja ha en funktion som såg ut ungefär så här:

function insertImg(textArea, url){
caretPos = textArea.caretPos;
caretPos = '<img src="'+url+'">';
textArea.focus();
}

Går det att fixxa :q

273 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
134 ms — ändringar (db)