Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Получить код нажатой кнопки при клике. (https://javascript.ru/forum/dom-window/28806-poluchit-kod-nazhatojj-knopki-pri-klike.html)

AllanZ 03.06.2012 16:12

Получить код нажатой кнопки при клике.
 
Здравствуйте! Помогите пожалуйста решить задачу, нужно по событию onclick вычислить код нажатой кнопки (Кнопка + Клик). Проблема решения в том что при нажатии event.which выдает код кнопки мыши (1) и как обойти этот барьер я не знаю. Гуглил.

PS: на сайте есть JQUERY.

dmitriymar 03.06.2012 16:28

ну наверное, для кнопок отслеживать события нажатия кнопок клавиатуры, а не события мыши.

Раед 03.06.2012 16:32

Алгоритм такой.
При событии keypress/kedown сохраняете код клавиши в переменную и при keyup удаляете.
А при клике уже проверяете значение переменной

AllanZ 03.06.2012 17:21

Спасибо за ответы. Раед, Вы действительно помогли. Видимо я слишком много думал об этой задаче)

bes 03.06.2012 17:50

Цитата:

Сообщение от Раед
При событии keypress/kedown сохраняете код клавиши в переменную и при keyup удаляете.

Последнюю часть наверное нужно опустить, так как переменная после отпускания клавиши никогда не будет хранить код клавиши.

AllanZ 03.06.2012 18:21

bes,
Вы действительно правы.

Раед 03.06.2012 18:47

Цитата:

Сообщение от bes
так как переменная после отпускания клавиши никогда не будет хранить код клавиши.

Всмысле
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<script type="text/javascript">
document.onkeydown = function(e) {
 a = e.keyCode;
}
document.onkeyup = function() {
 a = null;
}
document.onclick = function() {
 if (typeof a=='number') alert(a);
}
</script>
</head><body>
</body></html>

Что здесь можно опустить?

bes 03.06.2012 18:54

Раед, я лишь уточнил, что при вашем способе код нажатой клавиши будет храниться в переменной только до момента отпускания этой клавиши, то есть кликать надо, пока клавишу не отпустили, а иначе код не получить.


Часовой пояс GMT +3, время: 11:02.