View Full Version : Form textarea

09-16-2011, 11:47 PM
I found a script that is perfect for my need but it is written for forms textareas and I can seem to get it to work textareas that are not wrapped in form. :confused:

<script>function insertAtCursor(sTag,eTag)
var obj = document.form.message;
var strPos;
var ie_strPos;
var oSel;

strPos += sTag.length + eTag.length;
ie_strPos += sTag.length + eTag.length;

if (document.selection && document.selection.createRange) { // Internet Explorer
oSel = document.selection.createRange();
if (oSel.parentElement() == obj) {
oSel.text = sTag + oSel.text + eTag;
ie_strPos += oSel.text.length;
oSel.moveStart ('character', ie_strPos);
oSel.moveEnd ('character', 0);
oSel.select ();

else if (typeof(obj) != "undefined") { // Firefox
var longueur = parseInt(obj.value.length);
var selStart = obj.selectionStart;
var selEnd = obj.selectionEnd;

obj.value = obj.value.substring(0,selStart) + sTag + obj.value.substring(selStart,selEnd) + eTag + obj.value.substring(selEnd,longueur);
strPos += txtarea.value.substring(selStart,selEnd).length;

obj.selectionStart = strPos;
obj.selectionEnd = strPos;
obj.focus ();

else obj.value += sTag + eTag;

} </script>
<button onclick="insertAtCursor('','')">Test</button>
<form method="post" name="form" action="">
<textarea name="message" cols="50" rows="10"></textarea>
My textarea:

<textarea id="new_topic_text" class="new-topic-subject-text elastic" style="overflow: hidden;"></textarea>

09-16-2011, 11:54 PM
Hello, just add a name to your textarea element (name="message"). because that script is looking for a textarea field named message and cannot find it - so it not works.

<textarea name="message" id="new_topic_text" class="new-topic-subject-text elastic" style="overflow: hidden;"></textarea>

Old Pedant
09-17-2011, 12:40 AM
Properly, you should always put form elements such as <textarea> into a <form>...</form>.

If you don't have a <form>, just wrap it with a dummy one:

<textarea ...></textarea>

Won't do any harm and avoids problems in older browsers.

But if you do *NOT* have it in a <form>, then it is better to leave it as is. Don't give it a name.

Instead, just change the JS code from

var obj = document.form.message;


var obj = document.getElementById("new_topic_text");

For that matter, you can use that code whether or not you put it in a <form>.