ОсновноеRadiotalkПользовательское
MPCHAT - CMS хостинг чатов для профессионалов
90   •   Посмотреть все темы

Цитата с новой строки

 

1163
Денис @Анатолич
Уважаемые знатоки Яваскрипта. Хотел задать вопрос по форуму, галерее и гостевой.
Как сделать, чтобы при клике на "Цитировать" В поле для ввода текста, курсор находился не перед цитатой, А под цитатой, На новой строчке?
Если такое конечно возможно.
А если не возможно, то как вариант, чтобы его не было совсем. не так удобно. Но хотя бы не начнешь вбивать текст перед цитатой.

2615
Сергей @Pegass
function setcursor(obj, pos)
{

if(obj.setSelectionRange)
{
obj.focus();
obj.setSelectionRange(pos,pos);
}
else if (obj.createTextRange) {
var range = obj.createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}


дальше писать не готов ибо кода форума под рукой нет

Отредактировано Pegass - 27.12.2012
1163
Денис @Анатолич
Pegass, Так и не разобрался я куда эту функцию вставлять. А главное в каком месте обращаться. Если будет время может подскажешь для "чайников".

2615
Сергей @Pegass
Воткнул себе на форум - шикарно работает
function setcursor(obj, pos)
{
if(obj.setSelectionRange)//Хороший браузер
{
obj.focus();
obj.setSelectionRange(pos,pos);
}
else if (obj.createTextRange) // плохой IE
{
var range = obj.createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
obj.scrollTop=9999;//проскроллить textarea вниз
}

function quote(num)
{
a1=new Array('<br>','&quot;',''','|','&lt;','&gt;','\','`','&amp;');
a2=new Array('\r\n','"',"'",'|','<','>','\\','`','&');
nick=f_p[num][1];
txt=f_p[num][2];
for(i=0;i<a1.length;i++) txt=txt.split(a1[i]).join(a2[i]);
put("[qu ote="+nick.replace(/\]/g,"]")+"]"+txt+"[/qu ote]");//В ЭТОЙ СТРОКЕ НУЖНО УБРАТЬ ПРОБЕЛЫ
setcursor(document.form.message, document.form.message.value.length);
}

Отредактировано Pegass - 28.12.2012
596
Сергей @Князь_Пипецкий
Странный эффект....

Когда ставлю

function quote(num)
{
a1=new Array('<br>','&quot;',''','|','&lt;','&gt;','\','`','&amp;');
a2=new Array('\r\n','"',"'",'|','<','>','\\','`','&');
nick=f_p[num][1];
txt=f_p[num][2];
for(i=0;i<a1.length;i++) txt=txt.split(a1[i]).join(a2[i]);
put("[qu ote="+nick.replace(/\]/g,"]")+"]"+txt+"[/qu ote]");//В ЭТОЙ СТРОКЕ НУЖНО УБРАТЬ ПРОБЕЛЫ
setcursor(document.form.message, document.form.message.value.length);
}

вместо той function quote(num) что в исходном варианте форума - то доступна только текстовая версия форума.

2615
Сергей @Pegass
Князь_Пипецкий, а ты не заменяй всю функцию а только добавь синее

596
Сергей @Князь_Пипецкий
Pegass пишет:

Князь_Пипецкий, а ты не заменяй всю функцию а только добавь синее

Да! Так работает!
Полезная штука 😀 пусть не очень заметная, но удобная.
Спасибо!

1163
Денис @Анатолич
Pegass, отлично все работает, спасибо. курсор теперь после текста цитаты. Но было бы еще лучше если бы он оказался под текстом. Такое реализовать невозможно?
а то кто нибудь пробел или энтр не нажмет и получится фигня.

Хотя с пробелом вопрос сам решил. Добавил его после закрывающего тега /quote

put("[quote="+nick.replace(/\]/g,"]")+"]"+txt+"[/quote]
");

Отредактировано Анатолич - 29.12.2012
2615
Сергей @Pegass
попробуй вместо этого пробела написать \n\r

Отредактировано Pegass - 29.12.2012
1007
BETEPAH @BETEPAH
Анатолич пишет:

Pegass, отлично все работает, спасибо. курсор теперь после текста цитаты. Но было бы еще лучше если бы он оказался под текстом. Такое реализовать невозможно?
а то кто нибудь пробел или энтр не нажмет и получится фигня.

Хотя с пробелом вопрос сам решил. Добавил его после закрывающего тега /quote

put("[quote="+nick.replace(/\]/g,"]")+"]"+txt+"[/quote]
");


Почему фигня? Цитаты же оформляются с помощью div'а и текст после нее будет в любом случае с новой строки, независимо от того нажмет энтер или нет.

1163
Денис @Анатолич
BETEPAH, Ваша правда. и правда все работает и без пробела и без энтр. Почему то подумал, что по аналогии со смайлами без пробела не получится.
Конечно с новой строчки визуально печатать немного удобнее. Но это уже несущественные мелочи.