BBcode на два textarea

Статус
Закрыто для дальнейших ответов.

sinos

Новичок
Регистрация
21.08.2008
Сообщения
1
Замыслил сделать добавление новости как на DLE, есть ббкод который добавляется в активную textarea.
Незнаю как передать id текстарии в функцию.

Кнопки bb кодов
Код:
<td><img title="Загрузить изображение на сервер" src="/img/bbcodes/upload.gif" onclick="image_upload()" width="23" height="25" border="0">
		<img title="Плужирный" src="/img/bbcodes/b.gif" value="B" class="bb_bold" onclick="setBold('short')" width="23" height="25" border="0">
		<img title="Наклонный" src="/img/bbcodes/i.gif" value="I" class="bb_ital" onclick="setItalic('short')" width="23" height="25" border="0">
		<img title="Подчёркнутый текст" src="/img/bbcodes/u.gif" value="U" class="bb_under" onclick="setUnderline('short')" width="23" height="25" border="0">
		<img title="Зачёркнутый текст" src="/img/bbcodes/s.gif" value="S" class="bb_s" onclick="setStruckouttext('short')" width="23" height="25" border="0">
		<img title="Зачёркнутый текст" src="/img/bbcodes/quote.gif" value="QUOTE" class="bb_quote" onclick="setQuote('short')" width="23" height="25" border="0">
		<img title="Добавить картинку" src="/img/bbcodes/image.gif" value="IMAGE" class="bb_quote" onclick="setImg('short')" width="23" height="25" border="0">
		<img title="Выровнять по центру" src="/img/bbcodes/c.gif" value="CENTER" class="bb_quote" onclick="setCenter('short')" width="23" height="25" border="0">


Первый textarea
Код:
<textarea name="short" id="short" onclick=(тут функция приёма id) style="width:700px; height:300px"></textarea>
Второй textarea
Код:
<textarea name="full" id="full" onclick=(тут функция приёма id) style="width:700px; height:300px"></textarea>

addpost.js писал не сам , нашол на сайте
Код:
var textAreaSelectionObjects = [];
// Получаем экземпляр объекта
function getTextAreaSelection(id) {
	if (typeof(textAreaSelectionObjects[id]) == "undefined") {
		textAreaSelectionObjects[id] = new textAreaSelectionHelper(id);
	}
	return textAreaSelectionObjects[id];
}
// Конструктор, принимает в качестве аргумента ID текстарии
function textAreaSelectionHelper(id) {
	var obj = document.getElementById(id);
	this.target = obj;
	// Создаем свойства carretHandler для доступа к объекту в контексте узла
	// из обработчиков событий
	this.target.carretHandler = this;
	// Добавляем обработчик событий
	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): "";
	},
	// Установим текстовые фрагменты до выделения - text
	// и после него, если нужно - secondtag
	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;
		}
	},
}
// Обработчик событий. Занимается сохранением информации о выделении и позиции скролла
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;
	}
}

// Клиентские функции, хотя можно обойтись и без них
function setBold(id) { // Жирность
	getTextAreaSelection(id).setSelectedText('[b]', '[/b]');
}
function setItalic(id) { // Курсив
	getTextAreaSelection(id).setSelectedText('[i]', '[/i]');
}
function setUnderline(id) { // Подчеркивание
	getTextAreaSelection(id).setSelectedText('[u]', '[/u]');
}
function setStruckouttext(id) { // Зачёркивание
	getTextAreaSelection(id).setSelectedText('[s]', '[/s]');
}
function setImg(id) {
	getTextAreaSelection(id).setSelectedText('[img]', '[/img]');
}
function setCenter(id) {
	getTextAreaSelection(id).setSelectedText('[center]', '[/center]');
}
function setQuote(id) {
	getTextAreaSelection(id).setSelectedText('[quote]', '[/quote]');
}
function image_upload()
{

window.open('images.php', '_Addimage', 'toolbar=0,location=0,status=0, left=0, top=0, menubar=0,scrollbars=yes,resizable=0,width=640,height=550');	

}
Спасибо.
 
Статус
Закрыто для дальнейших ответов.
Верх Низ