2012-05-23 2 views
0

То, что я пробовал:Можно ли привязать к обычному элементу DOM с помощью KEYMAP

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"/> 

keydown представляется значением по умолчанию для 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

 Смежные вопросы

  • Нет связанных вопросов^_^