2015-05-20 91 views
0

我正在嘗試使用jquery來檢查if'語句是否被按下。 我希望用正則表達式,而不是檢查鍵盤碼/ ASCII字符,像這樣每個關鍵要做到這一點:從按鍵事件中讀取字符

$('#main-field').on('keypress, keydown', function(event) { 
    if ((event.which != 37 && (event.which != 39)...) { 
     code here 
    } 
} 

我知道event.which爲您提供每個字符,但如何鍵盤碼我是否達到了字符本身,它是否按reg exp來檢查它是否是'abc'字符? 感謝

回答

1

您可以使用String.fromCharCode(65)得到字符(a-z)。 這是一種靜態方法,它將一個unicode號碼轉換爲鍵盤佈局上相應的字符。

var chars = ''; 
$('#main-field').on('keypress, keydown', function(event) { 
    var character = String.fromCharCode(event.keyCode).toLowerCase(); 
    chars += character; 
    if (chars == 'abc') { 
     alert('abc'); 
    } 
}); 

所以要檢查是否按順序輸入「ABC」的用戶,可以追加characterchars字符串和比較,爲「ABC」

這裏是一個fiddle。 請注意,例如,Enter鍵將返回一個空字符串,因此您可能需要考慮後退。

1

你要找的鍵碼是6590,這相當於az。然後您可以檢查該範圍之間的事件的鍵碼。

另請注意,您不需要用逗號分隔on調用中的事件名稱。試試這個:

$('#main-field').on('keypress keydown', function(event) { 
    if (event.which >= 65 && event.which <= 90) { 
     // key a-z was pressed, do something here... 
    } 
} 

您可以找到可用鍵盤碼列表here