我希望將一個keydown監聽器添加到Sencha Touch 2中的數字字段,以動態檢查字段是否存在錯誤,而不是等到表單提交。數字字段是表單上的一個組件。看官方documentation,只能聽取keyup事件。如何添加一個keydown偵聽器到Ext.field.number?
是否有可能收聽標準javascript keydown事件並在窗體的初始化函數中定義此自定義偵聽器?
我希望將一個keydown監聽器添加到Sencha Touch 2中的數字字段,以動態檢查字段是否存在錯誤,而不是等到表單提交。數字字段是表單上的一個組件。看官方documentation,只能聽取keyup事件。如何添加一個keydown偵聽器到Ext.field.number?
是否有可能收聽標準javascript keydown事件並在窗體的初始化函數中定義此自定義偵聽器?
您可以將監聽器添加到輸入字段:
numberField.getComponent().input.on({
scope: this,
keydown: 'onKeyDown'
});
然後定義要在方法做什麼 '的onkeydown'
onKeyDown: function(e, obj) {
//Your code here
}
要小心,我碰到的嘗試在不同的設備上使用的鍵盤功能,特別是與Android的許多問題。經過許多與此有關的努力以及在數字領域缺乏標準後,我發現爲數據輸入建立一個數字鍵盤(與各種設備鍵盤相對)是一個更好的解決方案。希望這可以幫助。
這種方法似乎有效。在Chrome中進行測試時,顯示正確的事件是按鍵而不是按鍵。 – 2014-10-02 17:54:17
您是否嘗試過addListener方法?
numberField.addListener('keydown', function(){
alert("key down");
});
http://docs.sencha.com/touch/2.4.0/#!/api/Ext.mixin.Observable-method-addListener
我使用addListener來處理其他事件。它僅適用於數字字段的預定義事件。 keydown不是這些預定義事件之一。 – 2014-09-26 06:48:06
@mr_js您可以將數字字段放入容器中,並將容器中的keydown偵聽器添加到容器中嗎? – sissonb 2014-09-26 19:16:24
也許你可以詳細闡述一下爲什麼你需要keydown事件,而其他的都不會起作用。 99%的時間你可以帶着Sencha內置功能。如果你不能,可以隨意搜索輸入元素的'numberfield.element'樹並在那裏添加一個keydown屬性。 – Alexander 2014-09-26 07:14:36