Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.08.2012, 07:37
czp czp вне форума
Профессор
Отправить личное сообщение для czp Посмотреть профиль Найти все сообщения от czp
 
Регистрация: 15.10.2011
Сообщений: 213

перехват нажатие 3х кнопок
подскажите как сделать перехват кнопок, что бы я перехватил все нажатые кнопки, тоесть, если человек нажмет 3 или 4 кнопки на клаве их все перехватит,как такое сделать?
у меня получается вот что,но так я только отслеживаю одну кнопку
function checkKeycode(e) {
    var key;
    
	if (window.event) { 
	  key = window.event.keyCode;
	} else if (e) {
	  key = e.which;
	}

	alert(key);
 }
  
  window.onkeydown = function (event) {checkKeycode(event)}

думал через цикл, как то завернуть, что бы закидывало в массив, а потом по циклу считывало, но провалилась эта затея, направте на истинный путь,есть какие то решения??
P.S. : решение нужно без джейквери
Ответить с цитированием
  #2 (permalink)  
Старый 21.08.2012, 08:23
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

Ну для спец. клавиш есть e.altKey, e.ctrlKey, e.shiftKey, e.metaKey.
А так просто вручную делать триггер на нужную клавишу, т.е. при кейдаун - ставить переменно true при keyup - false.
<!DOCTYPE HTML>
<html lang="ru-RU">
<body><input>
<script>
var keys={};
function show() {
	var str='';
	for(var i in keys)if(keys[i]) str += (String.fromCharCode(i)||i)+' + ';
	document.body.firstChild.value = str.slice(0,-3);
}
function key(e) {
	var key;
	if (window.event) {
		key = window.event.keyCode;
	} else if (e) {
		key = e.which;
	}

	keys[key]= e.type === 'keydown' ? true : false;

	show()
}
window.onkeydown = window.onkeyup = key;
</script>
</body>
</html>
__________________
29375, 35

Последний раз редактировалось Aetae, 21.08.2012 в 08:44.
Ответить с цитированием
  #3 (permalink)  
Старый 22.08.2012, 07:40
czp czp вне форума
Профессор
Отправить личное сообщение для czp Посмотреть профиль Найти все сообщения от czp
 
Регистрация: 15.10.2011
Сообщений: 213

спасибо
Ответить с цитированием
  #4 (permalink)  
Старый 23.08.2012, 22:00
czp czp вне форума
Профессор
Отправить личное сообщение для czp Посмотреть профиль Найти все сообщения от czp
 
Регистрация: 15.10.2011
Сообщений: 213

ребят такая вот проблема, при рахной раскладке, и разных включенных прогах у меня каждый раз выдает разные коды на одну и туже кнопку, как можно сделать грамотно? что бы всегда выдавало мне нужную кнопку?
Ответить с цитированием
  #5 (permalink)  
Старый 23.08.2012, 22:08
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

czp,
Вот вчерашнее обсуждение
Разное поведение браузеров на события клавиатуры
Ответить с цитированием
  #6 (permalink)  
Старый 24.08.2012, 11:11
czp czp вне форума
Профессор
Отправить личное сообщение для czp Посмотреть профиль Найти все сообщения от czp
 
Регистрация: 15.10.2011
Сообщений: 213

спасиба, статья то что нужно)
Ответить с цитированием
  #7 (permalink)  
Старый 29.08.2012, 16:50
Аспирант
Отправить личное сообщение для daima Посмотреть профиль Найти все сообщения от daima
 
Регистрация: 01.08.2012
Сообщений: 59

А вот вопрос такой. Допустим мы нажали клавишу "стрелка вверх", потом нажали "стрелка вниз". Потом одну из них отпустили. как узнать какая осталась нажатой
Ответить с цитированием
  #8 (permalink)  
Старый 29.08.2012, 17:02
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

В моём примере всё работает.
__________________
29375, 35
Ответить с цитированием
  #9 (permalink)  
Старый 29.08.2012, 22:22
Аспирант
Отправить личное сообщение для daima Посмотреть профиль Найти все сообщения от daima
 
Регистрация: 01.08.2012
Сообщений: 59

Сообщение от Aetae Посмотреть сообщение
В моём примере всё работает.
К сожалению, не корректно:
Нажали на стрелка вверх, не отпуская на стрелка вниз, получили & + (
Отпустили стрелку вверх - получили ( Логично. Не отпуская кнопку нажимаем стрелка вверх - почему-то имеем & + (, а не (+&
Ответить с цитированием
  #10 (permalink)  
Старый 30.08.2012, 02:36
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

Сообщение от daima Посмотреть сообщение
К сожалению, не корректно:
Нажали на стрелка вверх, не отпуская на стрелка вниз, получили & + (
Отпустили стрелку вверх - получили ( Логично. Не отпуская кнопку нажимаем стрелка вверх - почему-то имеем & + (, а не (+&
Потому что:
1. Старые нажатия кнопок не удаляются, а обнуляются.(лень было что-ьто лишнеее придумывать, лоя примера и для большинства применений - сойдёт).
2. Для хранения используется объект, который в принципе не гарантирует порядок содержимого.

А вообще:
Сообщение от daima Посмотреть сообщение
А вот вопрос такой. Допустим мы нажали клавишу "стрелка вверх", потом нажали "стрелка вниз". Потом одну из них отпустили. как узнать какая осталась нажатой
... и где хоть слово о порядке вывода?

Если нужно точно соблюдать порядок - придумайте свой вариант хранения нажатых кнопок: массив, строка или ещё что-нить.
__________________
29375, 35

Последний раз редактировалось Aetae, 30.08.2012 в 02:40.
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Один обработчик для нескольких кнопок! frundik Элементы интерфейса 2 10.07.2012 15:30
Сымитировать нажатие клавиши по ее коду Win32 Events/DOM/Window 2 18.04.2012 02:37
Ajax. Работа с историей. Отследить нажатие "назад/вперед" Dorian_bs Общие вопросы Javascript 3 15.12.2011 03:19
Запуск выполнения PHP при нажатие на кнопку??? Abibas220 Общие вопросы Javascript 1 05.01.2011 12:05
Нажатие Левой и Правой кнопок мыши SergeiAzarov Общие вопросы Javascript 7 11.05.2008 16:57