-
Вебмастеру
(
http://forum.oszone.net/forumdisplay.php?f=22)
Javascript: Вставка текста в textarea в положение курсора
|
Вот тут пошаманил с кодом от phpbb вроде все работает.
создаем script.js файлик вот с таким содержимым
Код:
var text_no_selected = "Выберите текст для вставки";
var clientPC = navigator.userAgent.toLowerCase();
var clientVer = parseInt(navigator.appVersion);
var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));
var is_nav = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1)
&& (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1)
&& (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1));
var is_moz = 0;
var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1));
var is_mac = (clientPC.indexOf("mac")!=-1);
function mozillaWr(textarea, open, close)
{
var selLength = textarea.textLength;
var selStart = textarea.selectionStart;
var selEnd = textarea.selectionEnd;
if (selEnd == 1 || selEnd == 2)
selEnd = selLength;
var s1 = (textarea.value).substring(0,selStart);
var s2 = (textarea.value).substring(selStart, selEnd)
var s3 = (textarea.value).substring(selEnd, selLength);
textarea.value = s1 + open + s2 + close + s3;
textarea.selectionEnd = 0;
textarea.selectionStart = selEnd + open.length + close.length;
return;
}
function insert_into_position_cursor(text)
{
var textarea = document.post.message;
if (textarea.createTextRange && textarea.caretPos)
{
var caretPos = textarea.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text;
}
else {
if (is_nav && document.getElementById)
{
mozillaWr(textarea, '', text);
}
else { textarea.value += text; }
}
textarea.focus();
}
function copySelection()
{
if (window.getSelection) { selection = window.getSelection().toString(); }
else if (document.getSelection) { selection = document.getSelection(); }
else if (document.selection) { selection = document.selection.createRange().text; }
}
function pasteSelection()
{
if (selection)
{
insert_into_position_cursor('[_quote]' + selection + '[_/quote]\n');
selection = '';
document.post.message.focus();
return;
}
else { alert(text_no_selected); return; }
}
// функцию можно также использовать потом как облачение теги code, можно в b ....
//На самом деле как вы уже поняли этим не ограничивается создаем сколько нам нужно функций и юзаем их
function codeSelection(text)
{
text = '[_code] ' + text + ' [_/code]';
insert_into_position_cursor(text);
}
function storeCaret(textEl)
{
if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();
}
и форма
Код:
<script language="JavaScript" type="text/javascript" src="script.js"></script>
<form method="post" name="post">
<table border="1" width="98%">
<tr><td colspan="2" align="center"><b>!!!!Выдели меня!!!!</b></td></tr>
<tr>
<td width="135">
<table width="100%" border="0">
<tr>
<td valign="middle" align="center"> <br />
<table width="100" border="0" cellspacing="0" cellpadding="5">
<tr align="center" valign="middle">
<td>Для вставки цитаты, выделите её и <a onmouseover="copySelection()" href="javascript:pasteSelection()">нажмите эту ссылку</a><br>Для вставки кода, выделите её и <a onmouseover="copySelection()" href="javascript:codeSelection()">нажмите эту ссылку</a> </td>
</tr>
</table>
</td>
</tr>
</table>
</td>
<td><textarea name="message" rows="15" cols="100" wrap="virtual" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);"></textarea><br /></td>
</tr>
</table>
</form>
|
Время: 14:33.
© OSzone.net 2001-