Событие вызова jQuery при нажатии или нажатии клавиши

Я пытаюсь изменить цвет элемента div при нажатии клавиши и нажатии клавиши, но я просто не могу заставить его работать. Я проверяю каждый пример, который могу найти в Интернете, но мой код просто не работает.

Все примеры, которые я нашел, похоже, используют текстовое поле ввода формы в качестве цели для нажатия клавиши. Я не хочу этого делать. вот мой код:

$(document).keydown(function(e){
    if(e.which == 'A')
    {
        alert('key was pressed');
        $(#k1).css('background-color', "blue");
    }
});

Я думаю, что $(document) - это неправильная вещь, потому что функция никогда не вызывается. Но поскольку все примеры, которые я нашел, используют ввод текстового поля, я просто не могу понять, что туда вставить.


person brettgag    schedule 06.03.2013    source источник
comment
Вы пробовали с $("#k1")   -  person Roko C. Buljan    schedule 07.03.2013


Ответы (4)


РЕАЛЬНАЯ ДЕМО

$(document).keydown(function(e){
    if(e.which == 65){
        alert('Pressed key was: '+ e.which );
        $("#k1").css( { backgroundColor:"blue" } );
    }
});

Если вам нужно $('input') вместо $(document), не стесняйтесь использовать его,
65 — это event.which для A

person Roko C. Buljan    schedule 06.03.2013

Пара вещей. Во-первых, event.which вернет число, соответствующее ключу. А во-вторых, ваша цель jquery должна быть строкой. Итак, измените =='A' на ==65 и $(#k1) на $("#k1"), и все заработает. Вот демо: http://jsfiddle.net/AeBtV/

js

$(document).keydown(function(e){
 if(e.which == 65)
 {
    alert('A key was pressed');
    $("#k1").css('background-color', "blue");
 }
});

Примечание по кодовым номерам клавиш:

Диапазон составляет от 65 до 90 для A до Z. Таким образом, A равно 65, Z равно 90, а R равно 82.

person Travis J    schedule 06.03.2013
comment
Я заметил это, но, как я уже говорил, функция никогда не вызывается. Я даже не дошел до этих ошибок, хотя уже исправил их. Проблема как-то связана с "документом" - person brettgag; 07.03.2013

Я перехватил события keyup и keydown, используя .live:

$("#my_id").live('keydown',функция(событие) {

...

});

person Bob McCown    schedule 06.03.2013
comment
.live устарело! И чем это поможет в данном случае? - person bfavaretto; 07.03.2013

Ваше условие which недействительно. Должно быть 65, как уже упоминалось.

http://api.jquery.com/keypress/

Если вы прокрутите вниз, вы можете ввести любую клавишу и увидеть, какое значение каждой клавиши.

В качестве альтернативы вы можете сделать

console.log(e.which);
person Ross Joo    schedule 06.03.2013