2012-05-23 166 views
0

我試圖綁定到正規的DOM元素:是否可以使用鍵盤映射

new Ext.util.KeyMap({ 
     target: 'search', 
     eventName: 'itemkeydown', 
     binding: [ 
      { 
       key: Ext.EventObject.ESC, 
       scope: this, 
       fn: function() { 
        console.log('esc'); 
       }, 
       defaultEventAction: 'preventDefault' 
      } 
     ] 
    }); 

其中search是元素的id。雖然它不綁定到元素 - 我將焦點傳遞給它,請按ESCAPE並且未觸發回調。

我錯過了什麼?

PS:我也試過Ext.get('search')而不是search,結果相同。

PPS:search元素不是一個ExtJS的控制,它是有規律的<input type="text" ...>

回答

3

這裏是我的工作代碼:

var map = new Ext.util.KeyMap({ 
    target: 'search', 
    eventName: 'keydown', // changed from itemkeydown -> keydown 
    binding: [{ 
      key: Ext.EventObject.ESC, 
      scope: this, 
      fn: function() { 
       console.log('esc'); 
      }, 
      defaultEventAction: 'preventDefault' 
     } 
    ] 
}); 

我的HTML元素如下:

<input type="text" id="search"/> 

​​似乎是eventName的默認值。代碼將無法使用。你也可以把它使用4.0風格的工作:

var map = new Ext.util.KeyMap("search", { 
    key: Ext.EventObject.ESC, 
    handler: function() { 
     console.log('esc'); 
    }, 
    scope: this, 
    defaultEventAction: 'preventDefault' 
}); 
+0

對,我應該明白自己說'itemkeydown'是一個自定義的ExtJS事件http://docs.sencha.com/ext-js/4 -1 /#!/ api/Ext.view.View-event-itemkeydown謝謝PS:明天在工作後會檢查你嘗試後:-) – zerkms

相關問題