Общие > Гостевая Webscript.Ru Network
Ошибки на форуме сюда.
			andymc:
			
			файл: /vbcode.js
Функция: vbcode()
Строка файла: 106
--- Код:  ---
theform.message.value += "["+vbcode+"]";
arraypush(tags,vbcode); 
--- Конец кода ---
Эту строку надо заменить на: 
--- Код:  ---
!insertTag(theform.message,vbcode) ? arraypush(tags,vbcode) : true ;
--- Конец кода ---
Снизу файла /vbcode.js вставить функцию:
--- Код:  ---
function insertTag(field,tag,one) {	
	codes=\'[\'+tag+\']\'
	codee=\'[/\'+tag+\']\'
	returned = false
	field.focus();
	decrement=0
	if (!document.all&&!field.selectionStart){
		field.selectionStart=1
		decrement=1
	}
	if (field.selectionStart){
		var msg = field;
		var val = msg.value;		
		msg.value = val.substring(0, msg.selectionStart-decrement) + codes +
						val.substring(msg.selectionStart-decrement, msg.selectionEnd) + codee +
						val.substring(msg.selectionEnd, val.length);		
		return true;
	}
	if (typeof(document.selection) == \'undefined\') {
		field.value = field.value + codes //  + codee;   
		returned = false
	} else {
		var rng = document.selection.createRange( );
		if (rng.text) {   
			 document.selection.createRange().text = codes + rng.text + codee;
			 returned = true
		} else  {  
			 field.value = field.value + codes //  + codee;
			 returned = false
		}
		field.focus();		
	}
	return returned
}
--- Конец кода ---
Что было: строка theform.message.value += "["+vbcode+"]"; просто прибавляла код [тег] к значению поля. 
Что теперь: Функция insertTag() в отличие от этой строки ПЫТАЕТСЯ найти текст, который выделен, и заключить его в тег.
Если ничего не выделено, то функция действует как прежняя строка
arraypush(tags,vbcode); - тег считается открытым, если функция возвратит true
Резюме: я просто предложил. Ваше дело, попробовать или нет
		
			NAS:
			
			что не так ? не сработало
		
			andymc:
			
			Что конкретно? Какой бразуер?
В Мозилла есть проблема: вставляется сразу оба тега в позоцию.
В IE вроде бы всё нормально.
Пытался исправить, пока не получается.
		
			NAS:
			
			Хм, действительно работает, видимо дома все закешировалось сильно.
		
			andymc:
			
			Замечание
Реализация получилась такой сложной, т.к. техника selection разная у обоих браузеров, да ещё в Mozilla есть ошибка небольшая (решается с помощью кода \' decrement=0 if (!document.all&&!field.selectionStart){      field.selectionStart=1;   decrement=1;}) \'
Горячие клавиши
Вообще-то реализация горячих клавиш такая (придумано yandex)
--- Код:  ---key={
	needkey:function(e) {
		var code;
		if (!e) var e = window.event;
		if (e.keyCode) code = e.keyCode;
		else if (e.which) code = e.which;
		if ((code == 13) && (e.ctrlKey == true) && (e.altKey == false)) document.forms.vbform.submit(); // ctrl + enter
		if ((code == 66) && (e.ctrlKey == true) && (e.altKey == false)) vbcode(document.forms.vbform,\'B\',\'\'); // ctrl + B
		if ((code == 73) && (e.ctrlKey == true) && (e.altKey == false)) vbcode(document.forms.vbform,\'I\',\'\');   // ctrl + I
		if ((code == 85) && (e.ctrlKey == true) && (e.altKey == false)) vbcode(document.forms.vbform,\'U\',\'\');   // ctrl + U
	}
}
if (document.getElementById) {
		document.onkeydown = key.needkey;
}
--- Конец кода ---
Вставляется этот код после формы, иначе он её не видит.
Проблема: горячие клавиши например ctrl+b используются также в браузере. И работает это ужасно.
Резюме: делать не рекомендуется. Вышеприведённый код можете записать в копилку полезных решений!
		
Навигация
Перейти к полной версии