Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.02.2016, 17:40
Профессор
Отправить личное сообщение для Tecvid Посмотреть профиль Найти все сообщения от Tecvid
 
Регистрация: 13.12.2013
Сообщений: 175

keydown и keyup не видят обычных буквенных клавиш
здравствуйте, такая проблемка...

данный код работает как надо:
document.getElementById('area').addEventListener('keydown', function (e) {
	if (e.ctrlKey)
		alert('event fired');
});


но стоит проверить ещё и какую-то другую клавишу, нничего не срабатывает:

document.getElementById('area').addEventListener('keydown', function (e) {
	var keyCode = e.keyCode || e.which;

	if (e.ctrlKey && keyCode == 98)
		alert('event fired');
});


подскажите пожалуйста в чём проблема
Ответить с цитированием
  #2 (permalink)  
Старый 21.02.2016, 17:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Tecvid,
надо собирать коллекцию нажатых клавиш
идентификация одновременного нажатия 2-х и более клавиш
Ответить с цитированием
  #3 (permalink)  
Старый 21.02.2016, 18:05
Профессор
Отправить личное сообщение для Tecvid Посмотреть профиль Найти все сообщения от Tecvid
 
Регистрация: 13.12.2013
Сообщений: 175

рони,
благодарю, рабоает) но не знаю как туда вписать клавишу ктрл
Ответить с цитированием
  #4 (permalink)  
Старый 21.02.2016, 18:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Tecvid,
if ( keys.length === args.length && e.ctrlKey)
Ответить с цитированием
  #5 (permalink)  
Старый 21.02.2016, 18:20
Профессор
Отправить личное сообщение для Tecvid Посмотреть профиль Найти все сообщения от Tecvid
 
Регистрация: 13.12.2013
Сообщений: 175

всё отлично, но появилась другая проблема :/
мне надо бло запретить ctrl+<оперделённые клавиши>, с алертом всё работает, а вот с перевендефолт нет, куда бы его не вписал
Ответить с цитированием
  #6 (permalink)  
Старый 21.02.2016, 18:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Tecvid,
if ( keys.join() === args.join() ) func();
if ( keys.join() === args.join()) e.preventDefault();
Ответить с цитированием
  #7 (permalink)  
Старый 21.02.2016, 18:31
Профессор
Отправить личное сообщение для Tecvid Посмотреть профиль Найти все сообщения от Tecvid
 
Регистрация: 13.12.2013
Сообщений: 175

спасибо, но не получается, я всего лишь хочу запретить ctrl+b, ctrl+i и ctrl+i
Ответить с цитированием
  #8 (permalink)  
Старый 21.02.2016, 18:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Tecvid,
а так ?
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
</head>

<body>
<p></p>
<script>
  function runOnKeys(codes) {
      var pressed = {};
      document.addEventListener('keydown', function(e) {
          e = e || window.event;
          pressed[e.keyCode] = true;
          for (var i = 0; i < codes.length; i++) {
            if (!pressed[codes[i]]||!e.ctrlKey) {
              return;
            }
          }
          pressed = {};
          e.preventDefault();
        },false);
        document.addEventListener('keyup', function(e) {
          e = e || window.event;
          delete pressed[e.keyCode];
        },false);
      }

 runOnKeys(
      ["B".charCodeAt(0)]
      );
 runOnKeys(
      ["I".charCodeAt(0)]
      );
</script>



</body>

</html>
Ответить с цитированием
  #9 (permalink)  
Старый 21.02.2016, 19:13
Профессор
Отправить личное сообщение для Tecvid Посмотреть профиль Найти все сообщения от Tecvid
 
Регистрация: 13.12.2013
Сообщений: 175

рони,
так уже получилось, благодарю!
Ответить с цитированием
  #10 (permalink)  
Старый 22.02.2016, 00:18
Профессор
Отправить личное сообщение для Tecvid Посмотреть профиль Найти все сообщения от Tecvid
 
Регистрация: 13.12.2013
Сообщений: 175

оказывается и мой вариант работал, просто надо было в качестве кода указать другие цифры, а не те что в таблице кодов

document.getElementById('area').addEventListener('keydown', function (e) {
	var keyCode = e.keyCode || e.which;

	if (e.ctrlKey && (keyCode == 66 || keyCode == 73 || keyCode == 85))
		e.preventDefault();
});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
keyup, keydown, keypress для iPad/iPhone Floyd Мобильный JavaScript 0 28.10.2015 17:53
В ИЕ 10 не работает скрипт alexmixaylov Internet Explorer 2 15.09.2013 15:41