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

Отправка сообщений через Ctrl+Enter

 

95
удалён @userka
Вот в этой темке https://vmeste.eu/forum?tid=5222 расписано, как избавиться от селектора cmd, но скрипт, который там предоставлен, не работает. Может быть, у кого-то есть решение, как отправлять сообщения через Enter в общий чат и через Ctrl+Enter в приват?

2615
Сергей @Pegass
1) в скрипты

function sendCtrl(e) {
e = e || window.event;
if (e.keyCode == 13 && e.ctrlKey) {
if(document.fmsg.tonick.value!="") document.fmsg.cmd.value='/privat '; /*с проверкой что указан адресат, если адресата нет, то сообщение отправится в общий, если есть, то в приват*/
else document.fmsg.cmd.value='';
document.fmsg.submit();
}
else if (e.keyCode == 13) {
document.fmsg.cmd.value='';
document.fmsg.submit();
};
};

2) в чат внутри удалить селектор и добавить синее и красное, или не удалять селектор, тогда добавить только синее
<form action='index.php?inc=write' method=post target="hidden" name="fmsg" enctype="multipart/form-data" onsubmit="return parent.msg_send();" onreset="return parent.msg_reset();">
<input type=hidden name=text value=''>
<input type=hidden name=trans value=0>
<input type=hidden name=cmd value=''>
<script>
document.write("<input type=hidden name=nick value="+parent.mynick+">");
document.write("<input type=hidden name=id value="+parent.myid+">");
</script>
<input type=text title='Очистить поле' onclick='tonick.value="";if(cmd) cmd.value="";' class=ok name=tonick size=10 style='cursor:hand;' readonly>
<input type=text class=text name=text0 size=80 maxlength=500 onkeydown="parent.sendCtrl(event)">
<input type=submit class=ok value=Отправить>

</form>


ЗЫ фуфуфу из МП делать август

Отредактировано Pegass - 05.03.2013
95
удалён @userka
Pegass пишет:

1) в скрипты

function sendCtrl(e) {
e = e || window.event;
if (e.keyCode == 13 && e.ctrlKey) {
if(document.fmsg.tonick.value!="") document.fmsg.cmd.value='/privat '; /*с проверкой что указан адресат, если адресата нет, то сообщение отправится в общий, если есть, то в приват*/
else document.fmsg.cmd.value='';
document.fmsg.submit();
}
else if (e.keyCode == 13) {
document.fmsg.cmd.value='';
document.fmsg.submit();
};
};

Со второго раза только отправляет текст. Первый раз жмешь энтер: "No text sended!" Потом снова жмешь - отправляет нормально. Или я что-то не так делаю...

2615
Сергей @Pegass
Итого, не удаляя селектор правильное решение
в скрипты Функции общие

function sendCtrl(e) {
e = e || window.event;
if (e.keyCode == 13 && e.ctrlKey) {
if(document.fmsg.tonick.value!="") document.fmsg.cmd.value='/privat '; /*с проверкой что указан адресат, если адресата нет, то сообщение отправится в общий, если есть, то в приват*/
else document.fmsg.cmd.value='';
msg_send();
document.fmsg.submit();
}
else if (e.keyCode == 13) {
document.fmsg.cmd.value='';
msg_send();
document.fmsg.submit();
};
};

2) в чат внутри добавить синее и удалить красное
<form action='index.php?inc=write' method=post target="hidden" name="fmsg" enctype="multipart/form-data" onsubmit="return parent.msg_send();" onreset="return parent.msg_reset();">
<input type=hidden name=text value=''>
<input type=hidden name=trans value=0>
<input type=hidden name=cmd value=''>
<script>
document.write("<input type=hidden name=nick value="+parent.mynick+">");
document.write("<input type=hidden name=id value="+parent.myid+">");
</script>
<input type=text title='Очистить поле' onclick='tonick.value="";if(cmd) cmd.value="";' class=ok name=tonick size=10 style='cursor:hand;' readonly>
<input type=text class=text name=text0 size=80 maxlength=500 onkeydown="parent.sendCtrl(event)">
<input type=submit class=ok value=Отправить>

</form>

Отредактировано Pegass - 05.03.2013
415
Денис @FeNIX74
Pegass, Сделал как в посте #4 но теперь не удобство когда отправляешь ентером после отправки делает отступ в textarea.
Что есть не удобно.
Как сделать перенос строки строго только по Shift+Enter ?

Отредактировано FeNIX74 - 23.01.2014
2615
Сергей @Pegass
if( e.preventDefault ) e.preventDefault(); else e.returnValue = false;

415
Денис @FeNIX74
Pegass пишет:

if( e.preventDefault ) e.preventDefault(); else e.returnValue = false;

Куда это дописать?

2615
Сергей @Pegass
после

else if (e.keyCode == 13) {

415
Денис @FeNIX74
Pegass, Так не отправляет вообще...
Пробовал так:
else if (e.keyCode == 13) {
if( e.preventDefault ) e.preventDefault(); else e.returnValue = false;
document.fmsg.cmd.value='';
msg_send();
document.fmsg.submit();
};
};

215
Rafer @Rafer
Есть проблема.
Когда напишешь нику потом нажимаешь кнопку "отправить" отправляет повторно это сообщение несколько раз! Как исправить?

415
Денис @FeNIX74
SysRq, Поддерживаю вопрос..

2970
удалён @Foggy
Лично я не понимаю, зачем нужны обе строки сразу
msg_send();
document.fmsg.submit();

Вроде они одно и то же делают, не? 🐱‍👤

215
Rafer @Rafer
Foggy, Да, но без одной из них, не работает корректно...

135
заблокирован @yoda23
Чет в новой версии понамутили с контрол+альт+интер переключения транслита так что я поставил скрипт отсюда и не пашет со6ака(((( подскажите че не так



Кароче в чате внутри вот че стоит

<input type=text placeholder="Ваше сообщение..." name=text0 maxlength=500 style="width:800px;" autocomplete="off" onkeydown="sendCtrl(event);" onkeypress="if(enabletrans==1) return autotrans(this,event);">
А в скриптах



/* Отправка сообщений в чат */
function sendCtrl(e) {
e = e || window.event;
if (e.keyCode == 13 && e.ctrlKey) {
if(document.fmsg.tonick.value!="") {
document.fmsg.tonick.value = /\S+\s/mig.exec(document.fmsg.tonick.value);
document.fmsg.cmd.value='/privat ';
}
else {document.fmsg.cmd.value=' '; alert('Вы не указали получателя приватного сообщения'); return false;}
t=msg_send();
if(t==false) return false;
document.fmsg.submit();
document.fmsg.cmd.value='';
}
else if (e.keyCode == 13) {
if(e.preventDefault) e.preventDefault(); else e.returnValue = false;
document.fmsg.cmd.value='';
t=msg_send();
if(t==false) return false;
document.fmsg.submit();
};
};

Но ра6отать че то не хочет