2014-06-08 16 views
5

Quale sarebbe la sintassi semanticamente equivalente a macchina per la seguente riga nel javascriptCome rilevare il tasto premuto in TypeScript?

//Some knockout event handler. 
myFunc(data : string, evt : Event) { 
    //If enter or tab key up were detected add the excuse to the collection. 
    if(evt.enterKey || evt.which == 9) 
     //Do Something 
} 

Il problema che sto avendo qui è diverso da regolare evento javascript, classe dattiloscritto di evento non ha una proprietà enterKey o which. Quindi, come faccio a scoprire quale tasto viene premuto senza ottenere errore di compilazione dattiloscritto e la brutta sottolineatura rosso brutto?

risposta

17

È necessario utilizzare il tipo di evento più specializzato KeyboardEvent, come illustrato di seguito:

myFunc(data : string, evt : KeyboardEvent) 

Se si desidera rimuovere anche gli errori per evt.enterKey è necessario aggiungerlo estendendo l'interfaccia - anche se io' m non è consapevole che si tratta di un vero e proprio immobile in quanto non è una chiave tecnica di controllo, come CTRL, SHIFT o ALT, che tutti hanno proprietà sull'evento:

interface KeyboardEvent { 
    enterKey: boolean; 
} 
2

è neee d registrare l'evento, ad esempio:

class EventHandler { 
    static RegisterKeyPress(input: string){ 
     document.getElementById(input).addListener('keypress', (e: KeyboardEvent) =>{ 
      //You have yout key code here 
      console.log(e.keyCode); 
     } 
    } 
} 

Felice codifica!

Problemi correlati