Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Форма вставки BB-кодов 
V
    Опции темы
AztEK
Дата 1.8.2006, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: нет
Всего: 18



Ничего не нашёл ни в яндексе не здесь.
Нужен сабж. Везде где видел(да в любом форуме), помимо всего динамически генерируются кнопки вставки. А мне нужны просто функции. Поможете?


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
12345c
Дата 1.8.2006, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



PM WWW   Вверх
AztEK
Дата 1.8.2006, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: нет
Всего: 18



Ну... Это функция вставки строки туда, где стоит курсор.  Нужно ведь ещё обрамлять выделенное, запрашивать url и email (как здесь)...


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
AztEK
Дата 1.8.2006, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: нет
Всего: 18



Хотя нет, всё то. Но ничего не получается  smile 
Вот что пишу:
Код

<script type="text/javascript" src="bb.js"></script>
<script type="text/javascript">
var text = new TextAreaSelectionHelper(document.getElementById("textarea"));    
function test() {    
 text.setSelectedText("[test]","[/test]");
}
</script>
<textarea id="textarea" name="textarea" cols=80 rows=20></textarea>    
<input type="Button" onclick="javascript: test();" value="test">


Файл bb.js - скрипт написанный Sardar'ом, а именно
Код

/**    
* Обьект через который мы и будем работать с текстовыми полями.    
* Содержит все необходимые поля, легко расширяем по вкусу =)    
* @argument  obj  HTMLElment  - текстовое поле с кторым предстоит работать    
*    
* Author: Sardar <[email protected]>    
*/    
function TextAreaSelectionHelper(obj) {    
  this.target=obj;    
  this.target.carretHandler=this; //ссылка самого на себя для текстового поля    
  /**    
 * Помним что события могут быть уже опредлеенны, тогда нужно использовать    
 * очереди. Конечно реализация для ИЕ и Мозиллы в корне различаются, почитать    
 * и достать готовый код можно здесь: http://forum.vingrad.ru/index.php?showtopic=32350    
 */    
  this.target.onchange=_textareaSaver;    
  this.target.onclick=_textareaSaver;    
  this.target.onkeyup=_textareaSaver;    
  this.target.onfocus=_textareaSaver;    
  if(!document.selection) this.target.onSelect=_textareaSaver; //для Мозиллы    
    
  this.start=-1;    
  this.end=-1;    
  this.scroll=-1;    
  this.iesel=null; //для ИЕ    
}    
/**    
* Достать отселектированный текст    
*/    
TextAreaSelectionHelper.prototype.getSelectedText=function() {    
   return this.iesel? this.iesel.text: (this.start>=0&&this.end>this.start)? this.target.value.substring(this.start,this.end): "";    
}    
/**    
* Вставить код под курсором. Если текст не отселектирован(не фокуса) и    
* позиция не взята, то вставить в конец текстового поля.    
*    
* @argument text String - заменить селекцию на этот текст    
* @argument secondtag String - если задан, то селекция не заменяется, а обрамляется этими тегами    
*/    
TextAreaSelectionHelper.prototype.setSelectedText=function(text, secondtag) {    
  if(this.iesel) {    
    if(typeof(secondtag)=="string") {    
   var l=this.iesel.text.length;    
      this.iesel.text=text+this.iesel.text+secondtag;    
   this.iesel.moveEnd("character", -secondtag.length);    
    this.iesel.moveStart("character", -l);    
    } else {    
   this.iesel.text=text;    
    }    
    this.iesel.select();    
  } else if(this.start>=0&&this.end>=this.start) {    
     var left=this.target.value.substring(0,this.start);    
     var right=this.target.value.substr(this.end);    
  var scont=this.target.value.substring(this.start, this.end);    
  if(typeof(secondtag)=="string") {    
    this.target.value=left+text+scont+secondtag+right;    
    this.end=this.target.selectionEnd=this.start+text.length+scont.length;    
    this.start=this.target.selectionStart=this.start+text.length;     
  } else {    
       this.target.value=left+text+right;    
    this.end=this.target.selectionEnd=this.start+text.length;    
    this.start=this.target.selectionStart=this.start+text.length;    
  }    
  this.target.scrollTop=this.scroll;    
  this.target.focus();    
  } else {    
    this.target.value+=text + ((typeof(secondtag)=="string")? secondtag: "");    
    if(this.scroll>=0) this.target.scrollTop=this.scroll;    
  }    
}    
/**    
* Это функции для веса =)    
*/    
TextAreaSelectionHelper.prototype.getText=function() {    
  return this.target.value;    
}    
TextAreaSelectionHelper.prototype.setText=function(text) {    
  this.target.value=text;    
}    
/**    
* Приватная фукнкция, записывающая позицию курсора    
*/    
function _textareaSaver() {    
  if(document.selection) {    
    this.carretHandler.iesel = document.selection.createRange().duplicate();    
  } else if(typeof(this.selectionStart)!="undefined") {    
    this.carretHandler.start=this.selectionStart;    
    this.carretHandler.end=this.selectionEnd;    
    this.carretHandler.scroll=this.scrollTop;    
  } else {this.carretHandler.start=this.carretHandler.end=-1;}    
}

Не работает нив IE6 нив FF1.5 (выводит "text has no properties...")


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
Messenger
Дата 1.8.2006, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 16.2.2006

Репутация: нет
Всего: 1



Цитата

<script type="text/javascript">
var text = new TextAreaSelectionHelper(document.getElementById("textarea"));  

textarea еще несоздан. В onload.
PM MAIL   Вверх
AztEK
Дата 1.8.2006, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: нет
Всего: 18



А! То есть надо надо код писать после textarea?

Да, теперь всё получилось. Спасибо всем!  smile 


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0774 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.