Ответ Ctrl+Enter

13
Делаем как на хабре. (при нажатии ctrl+enter отправляется ответ)
Делаем проще (коммент от вист):

<script type="text/javascript">
document.addEvent('keyup', function(e){
        if(e.control && e.key == 'enter')
        {
                //alert(e.target.form);
                //e.target.form.submit()
                lsCmtTree.preview($('form_comment_reply').getProperty('value'));
                return false;
        }
});
</script>


А так точно работает:
Находим файл \www\templates\skin\new\actions\ActionBlog\comment.tpl

Ищем
<form action="" method="POST" id="form_comment" onsubmit="return false;" enctype="multipart/form-data">

Меняем на
<form action="" method="POST" id="form_comment" onsubmit="return false;" enctype="multipart/form-data" onkeypress="ctrlEnter(event,this);">

Ищем
<input type="submit" name="submit_comment" value="{$aLang.comment_add}" onclick="lsCmtTree.addComment('form_comment',{$oTopic->getId()}); return false;">

Меняем на
<input type="submit" name="submit_comment" value="{$aLang.comment_add}" onclick="lsCmtTree.addComment('form_comment',{$oTopic->getId()}); return false;" id="comment_reply">

Находим файл \www\templates\skin\new\js\comments.js

В самое начало вставляем
function ctrlEnter(e) { 
  key = e.keyCode || e.which;
	if(e.ctrlKey && (key == 13))
	document.getElementById('comment_reply').click() 
           }   

  • +3
  • 14 августа 2009, 19:45
  • Mmka

Комментарии (17)

RSS свернуть / развернуть
Раз на сайте используется mootools, почему бы его и не использовать, считаю данный хардкод излишним
function ctrlEnter(e) { 
  key = e.keyCode || e.which;
        if(e.ctrlKey && (key == 13))
        document.getElementById('comment_reply').click() 
           }  
+1
  • avatar
  • vist
  • 14 августа 2009, 20:33
Хм. А в чем разница с предложенным вариантом от Mmka?
-1
Это и есть его хард код, я просто скопировал, что бы показать что я считаю излишним.

Я надеюсь Вам не нужно говорить, что document.getElementById можно смело заменить на $ и т.д.
0
А, все, понял ;)
Кстати нижний коммент писал в другую тему) перепутал — тут их уже две оказывается…
0
Поправил — надеюсь так действительно проще.
0
Тот кусок кода, что от меня, он не до конца дописан, там нет проверки находиться ли человек в нужном месте (textarea) и по контрол ентер не отправляется а показывается «предпросмотр»… короче, это был просто рабочий пример на коленке за 5 минут, его нужно доработать, до идеального! =) Возьмись, у тебя все получиться!
0
в параметры textarea добавить можно
onkeypress="if(event.keyCode==10 || (event.ctrlKey && event.keyCode==13)) {lsCmtTree.addComment('form_comment',{$oTopic->getId()});}"
Сделал так в микроблоггинге.
0
Ладно, хардкодите :)

Мутулз такая цяця, столько полезных функций у евентов кеев :)

e.control, e.key и др.
0
Я же говорю — гуру редко бывают — приходится делать по нуббски) уж простите)
0
Просто к слову. Хорошим стилем будет отделять мух от котлет JS от HTML кода.
+1
Не работает =(
0
Только что сделал на своем сайте — все работает. У вас я заметил ничего не получается — вы уверены, что дело не в вас?
0
Надеюсь, что нет =)

По сути поставил уже много хаков/модулей. Все нормально работают…
Но с некоторыми есть проблемы… Делаю все как написано выше. Почистил все. =(
0
А это не может быть связано с хромом?
0
а ";" в некоторых местах не пропущены? А то поставил — а нихтс арбайт
0
FF — рабоатет
IE8 — не работает

Что может быть? Кэш почистил.
0
Стоит: редактирование комментов, смайлы, модуль Афиша — не работает хак, в чем может быть дело?
0
  • avatar
  • 2hd
  • 29 апреля 2010, 01:04
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.