2011-04-05 32 views
3

我無法在任何地方找到它。我想找到最好的方法來檢查鍵擊是否實際上是一個字符。Extjs監聽器按鍵檢查是否有任何字符

listeners:{ 
    'keyup':function(f, e){ 
     //Is key a letter/character 
    } 
} 

編輯

謝謝大家誰已經回答了,我知道如何檢測按下的實際關鍵,我想知道如何檢測鍵是否實際上是一個字符(不是箭,退格,輸入等)

回答

4

您需要捕獲發送到事件的參數。然後評估event.getKey()

listeners:{ 
    'keyup':function(field, event){ 
     if(event.getKey() >= 65 && event.getKey() <= 90) { 
      //the key was A-Z 
     } 
     if(event.getKey() >= 97 && event.getKey() <= 122) { 
      //the key was a-z 
     } 
    } 
} 
+0

我能夠使用這些方法(更新問題的參數),但我不確定如何檢查它的任何字符而不必循環。 .. – neolaser 2011-04-05 23:33:33

+0

我更新了我的答案。不需要執行循環 - 只需執行上述的範圍比較即可。 – Tommi 2011-04-06 06:34:03

+0

感謝您的答案 – neolaser 2011-04-13 04:09:03

3

你需要有正確的參數爲您的活動。

'keyup': { 
     fn: function(field,event) { 
     //use event.getKey() to get the key 
     } 
    } 

第一個參數是字段(表單元素),第二個參數是事件對象。您可以利用事件對象來獲取您的關鍵新聞細節。按照您的要求使用getKey()方法或getCharCode()

getKey方法返回數字代碼。您必須比較範圍(a = 65 & z = 90)以檢查按鍵是否爲字符。 Ext JS提供了一些用於檢查特殊鍵的靜態變量。

4

要捕獲鍵盤事件,必須將組件上的enableKeyEvents屬性設置爲true

..., 
enableKeyEvents: true, 
listeners:{ 
    'keyup': function(f, e){ 
     var charCode = e.getCharCode(); 
     var key  = e.getKey(); 
    } 
}, 
... 

見 「Detecting keystrokes」 爲差的鍵代碼則charCode之間的描述。

+0

感謝您的答案,我能夠得到的關鍵和charcode,但我想檢查它是否是一個字符,任何字符... – neolaser 2011-04-05 23:30:57

+0

你不能(可靠地)獲取有關輸入字符的信息來自'keyup'或'keydown'事件。它必須是「按鍵」。 – 2011-04-06 13:43:40

0

keyup或​​事件中無法分辨鍵擊是否產生了字符。唯一可以做到的事情是keypress。即使如此,由於行爲不一致,在某些瀏覽器中檢測也很棘手。請參閱下面的「3.2。字符事件返回的值」一節:http://unixpapa.com/js/key.html

相關問題