2013-04-17 2 views
0

Я пытаюсь поймать е нажатие клавиши события как Alt + G, мой позвоночник код теперь что-то вроде этого права:Обнаружение многократного нажатия клавиши в Backbone

class MyView extends Backbone.View 
    template: ... 

    events: 
    "keydown input" : "logKey" 

    logKey: (e) -> 
    if e.keyCode == 18 and e.keyCode == 71 
     console.log('did it!') 

Который не работает, так как есть только одно событие keycode за раз.

Как это можно достичь? Благодаря!

ответ

0

Почему бы не посмотреть на keypress вместо keydown? Что-то вроде этого:

class MyView extends Backbone.View 
    events: 
    "keypress input" : "logKey" 

    logKey: (e) -> 
    console.log('did it') if(e.keyCode == 169) 

Демо: http://jsfiddle.net/ambiguous/fmr8D/

+0

Я не возражаю, если это keypress, BTW, что будет означать код 169? Alt + g? Не знаю, как вызвать событие в JSfiddle. Спасибо за сообщение :) – tomasbarrios

+0

Да, вы бы искали 'if (e.keyCode == 169)' нажатием клавиши. Просто нажмите «» и нажмите Alt + g –

-1

Вам нужно будет установить отдельную переменную, чтобы отслеживать ключи модификатора и проверять это на событиях, связанных с keydown. Как:

events: 
    "keydown input" : "logKeyDown", 
    "keyup input" : "logKeyUp" 

logKey: (e) -> 
    if e.keyCode == 18 
     altDown = true 

    if altDown && e.keyCode == 71 
     console.log('did it!') 

logKeyUp: (e) -> 
    if e.keyCode == 18 
     altDown = false 
+0

Не значит '@altDown = true'? –

+0

Это тоже была идея mi, подумал, что для этого есть более простой способ. Спасибо, я буду проверять, будет ли это работать для меня – tomasbarrios

Смежные вопросы