Orbit
Гуру форума
- Регистрация
- 2 Апр 2007
- Сообщения
- 145
- Реакции
- 75
- Автор темы
- #1
Нужно было сделать кнопочки, чтобы по клику на них выделенный в textarea текст был окружен тегами (типа b, p, i).
Нашел вариант (ниже), но для кириллицы он работать отказывается, так же как и если в тексте встречаются некоторые недружественные ему символы. Подскажите, пож-та, может есть вариант для того, чтоб с любыми символами в textarea работало, или может в этом что-то добавить.
Нашел вариант (ниже), но для кириллицы он работать отказывается, так же как и если в тексте встречаются некоторые недружественные ему символы. Подскажите, пож-та, может есть вариант для того, чтоб с любыми символами в textarea работало, или может в этом что-то добавить.
Код:
function getSelection(ta)
{ var bits = [ta.value,'','',''];
if(document.selection)
{ var vs = '#$%^%$#';
var tr=document.selection.createRange()
if(tr.parentElement()!=ta) return null;
bits[2] = tr.text;
tr.text = vs;
fb = ta.value.split(vs);
tr.moveStart('character',-vs.length);
tr.text = bits[2];
bits[1] = fb[0];
bits[3] = fb[1];
}
else
{ if(ta.selectionStart == ta.selectionEnd) return null;
bits=(new RegExp('([\x00-\xff]{'+ta.selectionStart+'})([\x00-\xff]{'+(ta.selectionEnd - ta.selectionStart)+'})([\x00-\xff]*)')).exec(ta.value);
}
return bits;
}
function matchPTags(str)
{ str = ' ' + str + ' ';
ot = str.split(/\[[b|i|p].*?\]/i);
ct = str.split(/\[\/[b|i|p].*?\]/i);
return ot.length==ct.length;
}
function addPTag(ta,pTag)
{ bits = getSelection(ta);
if(bits)
{ if(!matchPTags(bits[2]))
{ alert('\t\tInvalid Selection\nSelection contains unmatched opening or closing tags.');
return;
}
ta.value = bits[1] + '<' + pTag + '>' + bits[2] + '</' + pTag + '>' + bits[3];
}
}
</script>
и используем так:
<a href="javascript:addPTag(document.getElementById('text'),'b')">BOLD</a>
где text - соответственно айди textarea