---
title: "Lägga text i en textarea vid muspekaren"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/171823-lägga-text-i-en-textarea-vid-muspekaren"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "Steam"
published: "2008-05-27T21:38:36.000Z"
updated: "2008-05-30T22:02:49.000Z"
replies: 3
views: 685
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/171823-lägga-text-i-en-textarea-vid-muspekaren"
---

# Lägga text i en textarea vid muspekaren

## #1 — Steam, 2008-05-27T21:38Z

Hej javascript gurus!

Jag har ett problem uppenbarligen :)
Det är som så att jag skulle vilja lägga till en smiley vid muspekarens position i en textarea. Jag har hittat en kod som fungerar i IE och Opera men inte Firefox.

Det skall alltså fungera precis som med smileysarna här i forumet. Ställer jag mig nu högst upp med muspekaren och klickar på en smiley kommer den att infogas där och inte i slutet av texten som det annars sker med scriptet som jag gjorde men även det scriptet som hittas här nedan:

```
<html>
<head>
<script type="text/javascript">
function storeCaret(ftext)
{
	if (ftext.createTextRange)
	{
		ftext.caretPos = document.selection.createRange().duplicate();
	}
}

function insertsmilie(smilieface)
{
	var t = document.f.t;
	if (t.createTextRange && t.caretPos)
	{
		var caretPos = t.caretPos;
		caretPos.text = smilieface;
		t.focus();
	}
	else
	{
		t.value+=smilieface;
		t.focus();
	}
}
</script>
<body>
<form name="f">
<textarea name="t" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" onchange="storeCaret(this);" style="width:400px;height:120px;">Text goes here</textarea><br>
<a href="javascript:;" onclick="insertsmilie(':-)');">Press</a><br>
</form>
</body>
</html>
```

Permalänk: https://www.webforum.nu/p/171823

## #2 — Davlid, 2008-05-28T06:52Z

I firefox får du använda dig av selectionStart och selectionEnd för att lägga in texten. På detta vis:

```
function insertsmilie(smilieface)
{
	var t = document.f.t;
	if (t.createTextRange && t.caretPos)
	{
		var caretPos = t.caretPos;
		caretPos.text = smilieface;
		t.focus();
	}
	else if( t.selectionStart )
	{
		var startIndex = t.selectionStart;
		var endIndex = t.selectionEnd; 
		t.value = t.value.substring(0, startIndex) + smilieface + t.value.substring(endIndex, t.value.length); 
		t.selectionStart = startIndex + smilieface.length;
		t.selectionEnd = t.selectionStart;
		t.focus();
	}
	else
	{
		t.value+=smilieface;
		t.focus();
	}
}
```

Permalänk: https://www.webforum.nu/p/2112873

## #3 — Steam, 2008-05-28T22:50Z

Du är en klippa Davlid! Stort tack.

Jag hade ingen aning om att funktionerna selectionStart och selectionEnd ens fanns.

En följdfråga dock. Varför går det inte att skicka form- samt textareanamn via funktionen tex.

```
function insertsmilie(smilieface,formname,textname)
{
	var t = document.formname.textname;
        .....
```

jag får javascript fel som säger att document.exempelsträng ... är odefinerat.

Permalänk: https://www.webforum.nu/p/2115844

## #4 — Steam, 2008-05-30T22:02Z

Nähe inget svar. Det kanske inte går? Isåfall märkligt.

Permalänk: https://www.webforum.nu/p/2116096

---

Tråden på webben: https://www.webforum.nu/amne/javascript/171823-lägga-text-i-en-textarea-vid-muspekaren
