Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.09.2008, 00:31
Новичок на форуме
Отправить личное сообщение для fankiss Посмотреть профиль Найти все сообщения от fankiss
 
Регистрация: 27.09.2008
Сообщений: 4

Как взять выделенный текст из textarea?
К изучению JS приступил вчера. До этого уже несколько лет (4-5) писал на php. Как вы знаете, ООП там не особо широко используется. С - не знаю, так что не легко пока что приходится

Поставлена была задача - обогатить наворотами новостной модуль своей цмс (добавить возможность комментирования и т.д.). При помощи JS сделать добавление в форму постинга тегов а-ля ББкод. Т.е. выделяешь нужный отрезок текста, кликаешь кнопочку и он обрамляется парными тегами... при чем кросбраузерно... ну хотябы для ИЕ, Лисы и Оперы. Задача эта мне пока кажется не реальной Решил для начала хотябы получить выделенный отрезок текста и показать его алертом.
Что имею:
текстареа - <textarea id = "postarea" class = "text_area" rows = "5" cols = "120" name = "txt"></textarea>
линк (потом сделаю красивее) - <a onClick = "javascript:tag_add(postarea, 'b', '/b')"><b>B</b></a>
Что имеет меня:
function tag_add(obj, str1, str2){
obj.focus();
if(document.selection)
{
var s = document.selection.createRange();
alert('---' + s.text + '---');
s.text = str1 + s.text + str2;
}
return false;
}
В алерте получаю "------". Т.е. s.text пустой получается? В чем я тут не прав, и если не сложно - как мне решить глобальную задачу (пример и развернутые камменты плз.)?

p.s. А как в ИЕ баги отлавливать, в нем же JS консоли нет?

Последний раз редактировалось fankiss, 28.09.2008 в 00:36.
Ответить с цитированием
  #2 (permalink)  
Старый 28.09.2008, 15:31
Новичок на форуме
Отправить личное сообщение для fankiss Посмотреть профиль Найти все сообщения от fankiss
 
Регистрация: 27.09.2008
Сообщений: 4

Стоило только добавить аттрибут href в тег a, как все заработало. ИЕ6... В пятом кажется и без этого должно работать.
Ответить с цитированием
  #3 (permalink)  
Старый 28.09.2008, 17:49
Новичок на форуме
Отправить личное сообщение для fankiss Посмотреть профиль Найти все сообщения от fankiss
 
Регистрация: 27.09.2008
Сообщений: 4

Функция получилась вот такая:

function tag_add(obj, str1, str2){
obj.focus(); 
// Для IE
if(document.selection) 
 {
 var s = document.selection.createRange();
 if(s.text)
  {
  s.text = str1 + s.text + str2;
  }
 else
  {
  obj.value = obj.value + str1 + str2;
  }
 return true;
 }
// Opera, FireFox
else if (typeof(obj.selectionStart) == "number")
 {
 if (obj.selectionStart != obj.selectionEnd)
  {
  var start = obj.selectionStart;
  var end = obj.selectionEnd;
  s = obj.value.substr(start,end-start);
  obj.value = obj.value.substr(0, start) + str1 + s + str2 + obj.value.substr(end);
  }
 else
  {
  obj.value = obj.value + str1 + str2;
  }
 return true;
 }
 return false;
}
Работает, проверено. Всем спасибо за огромную помощь ))
Ответить с цитированием
  #4 (permalink)  
Старый 28.03.2009, 01:45
Вася
 
Сообщений: n/a

Неа
В IE8 не работает. (добавляет тег в конец текста)
Ответить с цитированием
  #5 (permalink)  
Старый 28.03.2009, 12:03
Новичок на форуме
Отправить личное сообщение для fankiss Посмотреть профиль Найти все сообщения от fankiss
 
Регистрация: 27.09.2008
Сообщений: 4

Хм... благодарю за информацию.
Вообще со времен этого поста я уже заметно подтянул JS и ООП. Сейчас к примеру уже пишу кросбраузерное ajax приложение. Как будет время - поставлю ие8, поправлю функцию, и если не забуду то отпишусь.
Ответить с цитированием
  #6 (permalink)  
Старый 13.02.2016, 14:36
Профессор
Отправить личное сообщение для Гробовщик Посмотреть профиль Найти все сообщения от Гробовщик
 
Регистрация: 10.03.2013
Сообщений: 169

fankiss,
В итоге забыл))))
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите как отобразить текст. potkin Общие вопросы Javascript 17 26.10.2017 15:09
Вопрос: И опять про offsetLeft... sigurd Общие вопросы Javascript 11 04.10.2010 14:06
DOM vs iframe. Как в ифрейме заменить выделенный текст (его innerHTML)? Бухалыч Events/DOM/Window 4 20.08.2009 14:30
На входе HTML получить на выходе просто текст, как? Dmitry Общие вопросы Javascript 2 25.08.2008 10:42
Как распознать текст? monach79 Общие вопросы Javascript 12 21.07.2008 13:22