Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   HTML/DHTML/CSS/JS/VB (http://www.flasher.ru/forum/forumdisplay.php?f=66)
-   -   Выделение и вставка измененного текста (netscape) (http://www.flasher.ru/forum/showthread.php?t=71602)

baron27 09.11.2005 13:23

Выделение и вставка измененного текста (netscape)
 
Всем привет!
Вопрос вот такой. Есть что-то наподобие автоматического выделения текста разными способами - жирным, подчеркиванием и т.п.
Пример здесь www.career.ru/andrey/selection.html
Проблема в том, что если текст прописан в самом документе, то он вставляется и теги добавляются отлично, но если текст находится в самой форме, то ничего не возвращается. А ведь замысел таков, чтобы вставить текст и редактировать его в форме.
Проблема актуальна только для netscape движков. В IE все работает ок.
Пожалуйста, помогите кто-нибудь чем-нибудь. Где-то прочел, что это вообще невозможно. Так ли это?

Короче как на форуме при создании новой темы можно теги вставлять...)

Skubent 09.11.2005 13:55

Отвечают разработчики phpBB:

function bbfontstyle(bbopen, bbclose) {
var txtarea = document.post.message;

if ((clientVer >= 4) && is_ie && is_win) {
theSelection = document.selection.createRange().text;
if (!theSelection) {
txtarea.value += bbopen + bbclose;
txtarea.focus();
return;
}
document.selection.createRange().text = bbopen + theSelection + bbclose;
txtarea.focus();
return;
}
else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0))
{
mozWrap(txtarea, bbopen, bbclose);
return;
}
else
{
txtarea.value += bbopen + bbclose;
txtarea.focus();
}
storeCaret(txtarea);
}

baron27 09.11.2005 14:16

Спасибо, но
document.selection - это IE
document.getSelection() - NN

Skubent 09.11.2005 14:50

Читаем внимательно:
if ((clientVer >= 4) && is_ie && is_win) {
//тут работа с осликом
}
else
{
// а вот тут с мозилкой, оперой и т.д.
//txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0)
}

baron27 09.11.2005 16:18

Ок. Разглядел. Спасибо. Ща попробую.

baron27 10.11.2005 09:50

Нашел функцию mozwrap. Совсем запутался. Не подскажешь как ее на практике применить)

function mozWrap(txtarea, open, close)
{
var selLength = txtarea.textLength;
var selStart = txtarea.selectionStart;
var selEnd = txtarea.selectionEnd;
if (selEnd == 1 || selEnd == 2)
selEnd = selLength;

var s1 = (txtarea.value).substring(0,selStart);
var s2 = (txtarea.value).substring(selStart, selEnd)
var s3 = (txtarea.value).substring(selEnd, selLength);
txtarea.value = s1 + open + s2 + close + s3;
return;
}

Skubent 10.11.2005 11:44

Так и применить :) Подаешь ей на вход ссылку на TEXTAREA, в которой выделение хочешь в теги заключить, и тег, который поставить в начало выделения и в конец.
В твоем случае - mozWrap(document.myForm.myArea, "<b>", "</b>");
ПО строкам разбирать ее ? :)

baron27 10.11.2005 12:58

Спасибо большое! Все понял. Просто не врубался в textarea:)


Часовой пояс GMT +4, время: 13:10.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.