Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Определить нажатие кнопки Enter


Автор: Black 16.12.2004, 21:41
Необходимо выполнить определенные действия, если пользователь нажмет кнопку Enter.

Привидите пример работающий и для IE и для Mozilla
Заранее спасибо (под IE я могу сделать, а вот как под Mozilly без понятий???)

Автор: sergejzr 16.12.2004, 22:05
Так должно пойти :
Код
event.keyCode==13

Автор: sergejzr 16.12.2004, 22:06
Тема перенесена в форум для начинающих.

Автор: Sardar 16.12.2004, 23:30
Что бы остановить дефолтное действие вызови event.preventDefault() в коде.

Кстати sergej.z измени translit_only.js(строка 2) ev.prevDefault() на ev.preventDefault(), а то задолбали ошибки мозиллы.

Автор: Black 16.12.2004, 23:48
Цитата
event.keyCode==13

это я и сам понимаю, однако в Мозилле там как-то по-особенному надо получить значение переменной, т.е. в функцию надо что-то передать, чтобы обнаруживалась event.keyCode, а просто так выдает ошибку: event is not defined.

Браузер которым смотрю страницу Mozilla Firefox 1.0RC1

Автор: sergejzr 16.12.2004, 23:49
А функцию можно показать? И элемент, который ловит событие...

Sardar
Да я вообще уже новый скрипт подготовил. Сам знаешь, времени нет smile Эта ошибка меня самого задолбала....

Автор: Black 17.12.2004, 00:45
Код

<script>
function x(e){
e = e || window.Event || window.event;
alert(e.which);
if (e.which==13) { alert('Неужели');
else { alert('Блин'); }
return false;
} }

if (window.captureEvents){
window.captureEvents(event.KeyPress);
window.onkeydown = x;
}
else {
document.onkeydown = x;
}
}
</script>


Блин почему не работает???

Автор: sergejzr 17.12.2004, 00:48
Попробуй не e.which , а e.keyCode.

Автор: Black 17.12.2004, 00:53
нет, не помогает alert выдает сообщение alert(e.which) и так alert(e.keyCode): undefined

Мне кажется что проблема где-то здесь:
Код


if (window.captureEvents){
window.captureEvents(event.KeyPress);
window.onkeydown = x;
}
else {
document.onkeydown = x;
}


а именно в KeyPress и onkeydown

Автор: sergejzr 17.12.2004, 00:59
Да нет, просто убери эту строку:

Код

e = e || window.Event || window.event;


В функцию ведь и так правильный Ивент приходит smile

Автор: Black 17.12.2004, 01:01
ок! А как теперь повесить это событие, чтобы следило только за определенным полем в форме, а не за всеми нажатиями кнопок на странице???

Автор: sergejzr 17.12.2004, 01:17
Вот, я сделал ссылочку smile Там и код есть. С textarea smile
http://files.vingrad.ru/sergej.z/js/enter.html
Добавлено @ 01:21
Код

<html>
<body>
 <script>
  function x(e)
  {
   code=e.keyCode?e.keyCode: window.Event.keyCode
   alert(e.keyCode);
   if (e.keyCode==13)
   { alert('Неужели');}
   else { alert('Блин'); }
   return false;
  }
  //document.onkeydown=x;
 </script>
 <textarea onkeydown="x(event);"></textarea>
</body>
</html>


Автор: Aliance 21.12.2004, 18:02
Вот рабочий код под W3C:
Код

function enter(evt) {
  evt = (evt) ? evt : ((window.event) ? event : null);
  var charCode = (evt.charCode) ? evt.charCode : ((evt.which) ? evt.which : evt.keyCode);
  if (charCode == 13) {
     // операторы, выполняющиеся при нажатии Enter
  }
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)