2013-01-11 119 views
4

可能重複:
JavaScript event.keyCode constants的JavaScript:避免硬編碼鍵碼

這是我的代碼:

$button.on('keyup', function (event) { 
    // Detect an Enter keypress 
    if(event.keyCode === 13) { 
     doStuff(); 
    } 
}); 

正如你所看到的,鍵碼13是硬編碼。有沒有一種(跨瀏覽器)的方式來找出更具語義意義的數字?

+3

如果還有比ASCII十進制代碼更多的語義和乾淨,我從來沒有見過它。當然你可以製作一個'var keys = {enter:13}'地圖,並通過'event.code === keys.enter'捕捉它,但我個人更喜歡看到實際的鍵碼來確定腳本是什麼沒有查找對象的定義。不,根據我所知,Enter鍵沒有跨瀏覽器/平臺問題。 –

+0

只是用鍵碼定義一個對象的值,鍵名稱作爲鍵。沒有建立在這個枚舉。 – mpm

+4

'「\ r」 .charCodeAt(0)'或http://stackoverflow.com/questions/1465374/javascript-event-keycode-constants –

回答

1

要重複Alex K.的回答(I使用):

"\r".charCodeAt(0) 
10

如果您有工作jQueryUI的,你可以使用$.ui.keyCode常量:

keyCode: { 
    BACKSPACE: 8, 
    COMMA: 188, 
    DELETE: 46, 
    DOWN: 40, 
    END: 35, 
    ENTER: 13, 
    ESCAPE: 27, 
    HOME: 36, 
    LEFT: 37, 
    NUMPAD_ADD: 107, 
    NUMPAD_DECIMAL: 110, 
    NUMPAD_DIVIDE: 111, 
    NUMPAD_ENTER: 108, 
    NUMPAD_MULTIPLY: 106, 
    NUMPAD_SUBTRACT: 109, 
    PAGE_DOWN: 34, 
    PAGE_UP: 33, 
    PERIOD: 190, 
    RIGHT: 39, 
    SPACE: 32, 
    TAB: 9, 
    UP: 38 
} 

所以爲了檢查輸入壓利用:

if (event.keyCode === $.ui.keyCode.ENTER) { ... } 
+0

這些當然都不是恆定的跨瀏覽器右邊的鍵碼只? @Vision –

+1

時間的流逝打破了這個聯繫; [這裏有一個工作的一個(https://github.com/jquery/jquery-ui/blob/e9643f6bfc922773e29e3084e64de0240b547f32/ui/core.js#L29-L46)(截至2014年10月) –