Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Втавка текста в определенное место textarea

10K
06 сентября 2005 года
krafty
14 / / 29.08.2005
День добрый!
Пытаюсь реализовать вставку собственных тегов форматирования в текстовую область textarea. вроде того, что сделано на большинстве форумах, в т.ч. на этом.
Задача: по щелчку на кнопке выводится promt окошко. в него вводится текст. далее по нажатию на ОК этот текст вместе с соответствующим форматированием вставляется в то место textarea, где располагается курсор ввода. сейчас посмотрел и увидел, что на этом форуме вставляется всегда в конец текста.
Я, к сожалению, застрял на еще более простой проблеме. Вот мой набросок кода:

Код:
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;
 }
}


функция еще не доработана, но суть я думаю ясна. вобщем проблема в том, что
старый текст при вставке стирается.
в поисках решения я наткнулся на такой код

Код:
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" &#111;&#110;Click="doInsert(this.form)" VALUE="insertData()">


Код хороший, но работает только с абзацами (тег P). И не понятно, где брать координаты курсора в textarea и в какой зависимости они находятся со смещением offset.

И еще. Кто-нибудь в курсе, что такое firstChild.
Я в принципе согласен и на упрощение задачи до вставки текста просто в конец textarea. есть идея перед вставкой заносить старое содержимое в переменную...
513
21 сентября 2005 года
Yurec
228 / / 21.09.2005
Вставляем текст в ЛЮБОЕ место 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 &#111;&#110;click="addsymbol('my_form','my_text_area');" value="Запуск">
</form>

Дальше я думаю доработаешь до своих нужд. имя формы и имя texarea передаются в виде строки (для гибкости).
513
21 сентября 2005 года
Yurec
228 / / 21.09.2005
Извиняюсь
 
Код:
document.selection.createRange().execCommand('Copy') ;

Здесь лишнее (осталось от моего скрипта здесь это не надо).
10K
22 сентября 2005 года
krafty
14 / / 29.08.2005
спасибо, обязательно буду использовать
513
22 сентября 2005 года
Yurec
228 / / 21.09.2005
Цитата:
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="ПОДЧЕРКНУТЫЙ" &#111;&#110;Mouseover="self.status = 'Подчёркнутый'; return true " &#111;&#110;Mouseout="self.status = 'Система КМ';">
</a>
[url="java script: addtagstext('add_form','block_text','CENTER');"][/url]

javascript - Одним словом! (не понимаю почему в етом форуме расползается на 2(((()
10K
22 сентября 2005 года
krafty
14 / / 29.08.2005
а как насчет вставки ссылок - здесь два параметра: url и название ссылки.
И по поводу совместимости пару слов, если не затруднит
513
22 сентября 2005 года
Yurec
228 / / 21.09.2005
Цитата:
Originally posted by krafty
а как насчет вставки ссылок - здесь два параметра: url и название ссылки.
И по поводу совместимости пару слов, если не затруднит



Для вставки ссылок придётся использовать 1-й вариант (с popup окошком чтобы получить url и название) но что касается обрамляющих тегов (типа ) я думаю удобней использовать второй вариант.

>>И по поводу совместимости пару слов, если не затруднит

Прости, не понял совместимости чего с чем?

10K
22 сентября 2005 года
krafty
14 / / 29.08.2005
В случае с JavaScript обычно имеют ввиду совместимость с различными типами и версиями браузеров. В каких браузерах ты проверял работоспособность скрипта?
513
22 сентября 2005 года
Yurec
228 / / 21.09.2005
Цитата:
Originally posted by krafty
В случае с JavaScript обычно имеют ввиду совместимость с различными типами и версиями браузеров. В каких браузерах ты проверял работоспособность скрипта?


только в IE, для навигатора вряд-ли, нашел кое-что на этом сайте по выделениям-
глянь тут

10K
22 сентября 2005 года
krafty
14 / / 29.08.2005
Хорошая статья. Спасибо! Осталось теперь только передаль старое ;)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог