2014-09-25 40 views
0

我希望將一個keydown監聽器添加到Sencha Touch 2中的數字字段,以動態檢查字段是否存在錯誤,而不是等到表單提交。數字字段是表單上的一個組件。看官方documentation,只能聽取keyup事件。如何添加一個keydown偵聽器到Ext.field.number?

是否有可能收聽標準javascript keydown事件並在窗體的初始化函數中定義此自定義偵聽器?

+0

也許你可以詳細闡述一下爲什麼你需要keydown事件,而其他的都不會起作用。 99%的時間你可以帶着Sencha內置功能。如果你不能,可以隨意搜索輸入元素的'numberfield.element'樹並在那裏添加一個keydown屬性。 – Alexander 2014-09-26 07:14:36

回答

1

您可以將監聽器添加到輸入字段:

numberField.getComponent().input.on({ 
 
    scope: this, 
 
    keydown: 'onKeyDown' 
 
});

然後定義要在方法做什麼 '的onkeydown'

onKeyDown: function(e, obj) { 
 
    //Your code here 
 
}

要小心,我碰到的嘗試在不同的設備上使用的鍵盤功能,特別是與Android的許多問題。經過許多與此有關的努力以及在數字領域缺乏標準後,我發現爲數據輸入建立一個數字鍵盤(與各種設備鍵盤相對)是一個更好的解決方案。希望這可以幫助。

+0

這種方法似乎有效。在Chrome中進行測試時,顯示正確的事件是按鍵而不是按鍵。 – 2014-10-02 17:54:17

0

您是否嘗試過addListener方法?

numberField.addListener('keydown', function(){ 
    alert("key down"); 
}); 

http://docs.sencha.com/touch/2.4.0/#!/api/Ext.mixin.Observable-method-addListener

+0

我使用addListener來處理其他事件。它僅適用於數字字段的預定義事件。 keydown不是這些預定義事件之一。 – 2014-09-26 06:48:06

+0

@mr_js您可以將數字字段放入​​容器中,並將容器中的keydown偵聽器添加到容器中嗎? – sissonb 2014-09-26 19:16:24

相關問題