![]() |
Выделение и вставка измененного текста (netscape)
Всем привет!
Вопрос вот такой. Есть что-то наподобие автоматического выделения текста разными способами - жирным, подчеркиванием и т.п. Пример здесь www.career.ru/andrey/selection.html Проблема в том, что если текст прописан в самом документе, то он вставляется и теги добавляются отлично, но если текст находится в самой форме, то ничего не возвращается. А ведь замысел таков, чтобы вставить текст и редактировать его в форме. Проблема актуальна только для netscape движков. В IE все работает ок. Пожалуйста, помогите кто-нибудь чем-нибудь. Где-то прочел, что это вообще невозможно. Так ли это? Короче как на форуме при создании новой темы можно теги вставлять...) |
Отвечают разработчики 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); } |
Спасибо, но
document.selection - это IE document.getSelection() - NN |
Читаем внимательно:
if ((clientVer >= 4) && is_ie && is_win) { //тут работа с осликом } else { // а вот тут с мозилкой, оперой и т.д. //txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0) } |
Ок. Разглядел. Спасибо. Ща попробую.
|
Нашел функцию 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; } |
Так и применить :) Подаешь ей на вход ссылку на TEXTAREA, в которой выделение хочешь в теги заключить, и тег, который поставить в начало выделения и в конец.
В твоем случае - mozWrap(document.myForm.myArea, "<b>", "</b>"); ПО строкам разбирать ее ? :) |
Спасибо большое! Все понял. Просто не врубался в textarea:)
|
| Часовой пояс GMT +4, время: 13:10. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.