Entry
how can i replace selected text in a textarea with a different test using both netscape and ie
Aug 27th, 2007 13:50
John Doe, Arsen Yeremin, Duvoor Kirthi,
/*
the last version didnt answer the question, so here it is:
(this code snippet is taken from php-fusion and it answers
the question -> !selected text!)
*/
function addText(elname, wrap1, wrap2) {
if (document.selection) { // for IE
var str = document.selection.createRange().text;
document.forms['inputform'].elements[elname].focus();
var sel = document.selection.createRange();
sel.text = wrap1 + str + wrap2;
return;
} else if ((typeof
document.forms['inputform'].elements[elname].selectionStart) !=
'undefined') { // for Mozilla
var txtarea = document.forms['inputform'].elements[elname];
var selLength = txtarea.textLength;
var selStart = txtarea.selectionStart;
var selEnd = txtarea.selectionEnd;
var oldScrollTop = txtarea.scrollTop;
//if (selEnd == 1 || selEnd == 2)
//selEnd = selLength;
var s1 = (txtarea.value).substring(0,selStart);
var s2 = (txtarea.value).substring(selStart, selEnd)
var s3 = (txtarea.value).substring(selEnd, selLength);
txtarea.value = s1 + wrap1 + s2 + wrap2 + s3;
txtarea.selectionStart = s1.length;
txtarea.selectionEnd = s1.length + s2.length + wrap1.length +
wrap2.length;
txtarea.scrollTop = oldScrollTop;
txtarea.focus();
return;
} else {
insertText(elname, wrap1 + wrap2);
}
}
/*
Ok. I admit it. This code doesnt actually do the required
but you should be able to understand the principle.
Have fun with the code as I had :)
*/