Witam mam taki kod do wstawiania znacznikow do textarea:
<script type="text/javascript"> <!--
/**************************************************************************/
function closeTags(str, tagsToClose) {
var tags = {}, ret = '', sT = tagsToClose;
str.replace(/<(\/)?([\w]+)([\s=][^<>]*)?>/g, function(a, b, c) {
if (isNaN(tags[c = c.toLowerCase()])) tags[c] = 0;
for (var i = 0; i < sT.length;) if (c == sT[i++]) {
b != '/' ? tags[c]++ : tags[c] > 0 ? tags[c]-- : 0; break;
}
} );
for (var v in tags) while (tags[v]--) ret += '[/' + v + ']';
return ret;
}
function selExist(elm) {
if (elm.setSelectionRange) {
return elm.selectionStart != elm.selectionEnd;
}
else if (document.selection) {
elm.focus();
var range = document.selection.createRange();
return range.text != '';
}
return false;
}
function addToEnd(elm, text) {
elm.focus();
elm.value += text;
if (elm.setSelectionRange) {
var len = elm.value.length;
elm.setSelectionRange(len, len);
}
elm.scrollTop = elm.scrollHeight;
}
function selReplace(elm, text1, text2) {
elm.focus();
if (elm.setSelectionRange) {
if (typeof text2 != 'undefined') {
text1 += elm.value.substring(elm.selectionStart, elm.selectionEnd) + text2;
}
var scrollPos = [elm.scrollLeft, elm.scrollTop];
var begin = elm.value.substr(0, elm.selectionStart);
var end = elm.value.substr(elm.selectionEnd);
var curPos = elm.selectionStart + text1.length;
elm.value = begin + text1 + end;
elm.setSelectionRange(curPos, curPos);
elm.scrollLeft = scrollPos[0];
elm.scrollTop = scrollPos[1];
}
else if (document.selection) {
var range = document.selection.createRange();
if (typeof text2 != 'undefined') {
text1 += range.text + text2;
}
range.text = text1;
range.select();
}
else {
if (typeof text2 != 'undefined') text1 += text2;
addToEnd(elm, text1);
}
}
/**************************************************************************/
var tagList = ['b', 'i', 'u', 'code', 'img'];
var tagOpened = [];
function insertText(text) {
var elm = document.forms.my_form.my_textarea;
selReplace(elm, ' ' + text + ' ');
}
function pasteTag(nmbr, btn) {
var elm = document.forms.my_form.my_textarea;
if (selExist(elm)) {
selReplace(elm, '[' + tagList[nmbr] + ']', '[/' + tagList[nmbr] + ']');
}
else {
if (tagOpened[nmbr]) {
selReplace(elm, '[/' + tagList[nmbr] + ']');
btn.value = btn.value.substr(0, btn.value.length - 1);
tagOpened[nmbr] = false;
}
else {
selReplace(elm, '[' + tagList[nmbr] + ']');
btn.value += '*';
tagOpened[nmbr] = true;
}
}
}
function closeAllTags() {
var elm = document.forms.my_form.my_textarea;
var inpts = document.forms.my_form.elements;
var tmpStr = closeTags(elm.value, tagList);
if (tmpStr != '') {
addToEnd(elm, tmpStr);
tagOpened = [];
for (var i = 0; i < inpts.length; i++) {
if (inpts[i].type.toLowerCase() == 'button') {
with (inpts[i].value) if (charAt(length - 1) == '*') {
inpts[i].value = inpts[i].value.substr(0, inpts[i].value.length - 1);
}
}
}
}
elm.focus();
}
//-->
i takimi buttonami je wstawiam:
<input class="btn1" type='button' value='B' accesskey="b" onclick="pasteTag(0, this)" onmouseover="overlib('<div align=center>pogrubienie
</div>')" onmouseout="nd();"/>
<input class="btn1" type='button' value='I' accesskey="i" onclick="pasteTag(1, this)" onmouseover="overlib('<div align=center>kursywa
</div>')" onmouseout="nd();"/>
<input class="btn1" type='button' value='U' accesskey="u" onclick="pasteTag(2, this)" onmouseover="overlib('<div align=center>podkreślenie
</div>')" onmouseout="nd();"/>
<input class="btn1" type='button' value='CODE' accesskey="c" onclick="pasteTag(3, this)" onmouseover="overlib('<div align=center>kod źródłowy
</div>')" onmouseout="nd();"/>
<input class="btn1" type='button' value='IMG' accesskey="m" onclick="pasteTag(4, this)" onmouseover="overlib('<div align=center>wstaw obrazek (wpisz nazwe z rozszerzeniem)
</div>')" onmouseout="nd();"/>
<input class="btn1" type="button" onclick="closeAllTags()" value="Zamknij" onmouseover="overlib('<div align=center>Zamknij znaczniki
</div>')" onmouseout="nd();">
I tu pojawia sie problem ponieważ button
zamknij znaczniki wogule ich nie zamyka. Prosze o pomoc