function insertText(font)
{
var userText="Введите текст для выделения";
switch (font) {
case "b": userText+=" полужирным начертанием"; break;
case "i": userText+=" курсивным начертанием"; break;
}
var entry=prompt(userText,"");
if (entry!="") {
var newString = "{b}"+entry+"{/b}";
document.form1.textarea1.value=newString;
}
}
Втавка текста в определенное место textarea
Пытаюсь реализовать вставку собственных тегов форматирования в текстовую область textarea. вроде того, что сделано на большинстве форумах, в т.ч. на этом.
Задача: по щелчку на кнопке выводится promt окошко. в него вводится текст. далее по нажатию на ОК этот текст вместе с соответствующим форматированием вставляется в то место textarea, где располагается курсор ввода. сейчас посмотрел и увидел, что на этом форуме вставляется всегда в конец текста.
Я, к сожалению, застрял на еще более простой проблеме. Вот мой набросок кода:
Код:
функция еще не доработана, но суть я думаю ясна. вобщем проблема в том, что
старый текст при вставке стирается.
в поисках решения я наткнулся на такой код
Код:
function doInsert(form) {
var node = document.getElementById("myP").firstChild
var offset = form.insertOffset.value //поле ввода смещения
var newString = form.insertStr.value //поле ввода вставляемой строки
try {
node.insertData(offset, newString)
}
//перехват ошибок
catch(err) {
handleError(err)
}
}
--------------------------------------------------------------------
<P ID="myP" STYLE="font-weight:bold; text-align:center">
//вызов
<INPUT TYPE="button" onClick="doInsert(this.form)" VALUE="insertData()">
var node = document.getElementById("myP").firstChild
var offset = form.insertOffset.value //поле ввода смещения
var newString = form.insertStr.value //поле ввода вставляемой строки
try {
node.insertData(offset, newString)
}
//перехват ошибок
catch(err) {
handleError(err)
}
}
--------------------------------------------------------------------
<P ID="myP" STYLE="font-weight:bold; text-align:center">
//вызов
<INPUT TYPE="button" onClick="doInsert(this.form)" VALUE="insertData()">
Код хороший, но работает только с абзацами (тег P). И не понятно, где брать координаты курсора в textarea и в какой зависимости они находятся со смещением offset.
И еще. Кто-нибудь в курсе, что такое firstChild.
Я в принципе согласен и на упрощение задачи до вставки текста просто в конец textarea. есть идея перед вставкой заносить старое содержимое в переменную...
Код:
<script>
function addsymbol(formname,textarea_name)
{
eval(formname+"."+textarea_name+".focus();");
var rng=document.selection.createRange();
rng.text = prompt("","");
document.selection.createRange().execCommand('Copy') ;
}
</script>
<body>
<form name="my_form">
<textarea rows=5 cols=20 name="my_text_area">
</textarea>
<input type=button onclick="addsymbol('my_form','my_text_area');" value="Запуск">
</form>
function addsymbol(formname,textarea_name)
{
eval(formname+"."+textarea_name+".focus();");
var rng=document.selection.createRange();
rng.text = prompt("","");
document.selection.createRange().execCommand('Copy') ;
}
</script>
<body>
<form name="my_form">
<textarea rows=5 cols=20 name="my_text_area">
</textarea>
<input type=button onclick="addsymbol('my_form','my_text_area');" value="Запуск">
</form>
Дальше я думаю доработаешь до своих нужд. имя формы и имя texarea передаются в виде строки (для гибкости).
Код:
document.selection.createRange().execCommand('Copy') ;
Здесь лишнее (осталось от моего скрипта здесь это не надо).
спасибо, обязательно буду использовать
Цитата:
Originally posted by krafty
спасибо, обязательно буду использовать
спасибо, обязательно буду использовать
Кстати если нитересно прдлегаю свой вариант. Принцип такой: не нужно в popup окно вводить строку, а достаточно выделить в textarea текст мышкой и нажать нужную кнопку, тогда текст сам обрамляется нужным тегом (это более удобно, так как можно выделять сразу несколько строк:)
Код:
<script>
function addtagstext(formname,textarea_name,tag)
{
eval(formname+"."+textarea_name+".focus();");
var rng=document.selection.createRange();
if(rng.text!="")
my_text=rng.text = "<"+tag+">"+rng.text+"</"+tag+">";
}
</script>
<body>
<form name="add_form">
<textarea name="block_text" cols=10 rows=4>
</textarea>
</form>
[url="java script: addtagstext('add_form','block_text','STRONG');"][/url]
[url="java script: addtagstext('add_form','block_text','I');"][/url]
<a href="java script: addtagstext('add_form','block_text','U');" title="ПОДЧЕРКНУТЫЙ" onMouseover="self.status = 'Подчёркнутый'; return true " onMouseout="self.status = 'Система КМ';">
</a>
[url="java script: addtagstext('add_form','block_text','CENTER');"][/url]
function addtagstext(formname,textarea_name,tag)
{
eval(formname+"."+textarea_name+".focus();");
var rng=document.selection.createRange();
if(rng.text!="")
my_text=rng.text = "<"+tag+">"+rng.text+"</"+tag+">";
}
</script>
<body>
<form name="add_form">
<textarea name="block_text" cols=10 rows=4>
</textarea>
</form>
[url="java script: addtagstext('add_form','block_text','STRONG');"][/url]
[url="java script: addtagstext('add_form','block_text','I');"][/url]
<a href="java script: addtagstext('add_form','block_text','U');" title="ПОДЧЕРКНУТЫЙ" onMouseover="self.status = 'Подчёркнутый'; return true " onMouseout="self.status = 'Система КМ';">
</a>
[url="java script: addtagstext('add_form','block_text','CENTER');"][/url]
javascript - Одним словом! (не понимаю почему в етом форуме расползается на 2(((()
И по поводу совместимости пару слов, если не затруднит
Цитата:
Originally posted by krafty
а как насчет вставки ссылок - здесь два параметра: url и название ссылки.
И по поводу совместимости пару слов, если не затруднит
а как насчет вставки ссылок - здесь два параметра: url и название ссылки.
И по поводу совместимости пару слов, если не затруднит
Для вставки ссылок придётся использовать 1-й вариант (с popup окошком чтобы получить url и название) но что касается обрамляющих тегов (типа ) я думаю удобней использовать второй вариант.
>>И по поводу совместимости пару слов, если не затруднит
Прости, не понял совместимости чего с чем?
В случае с JavaScript обычно имеют ввиду совместимость с различными типами и версиями браузеров. В каких браузерах ты проверял работоспособность скрипта?
Цитата:
Originally posted by krafty
В случае с JavaScript обычно имеют ввиду совместимость с различными типами и версиями браузеров. В каких браузерах ты проверял работоспособность скрипта?
В случае с JavaScript обычно имеют ввиду совместимость с различными типами и версиями браузеров. В каких браузерах ты проверял работоспособность скрипта?
только в IE, для навигатора вряд-ли, нашел кое-что на этом сайте по выделениям-
глянь тут
Хорошая статья. Спасибо! Осталось теперь только передаль старое ;)