2016-02-08 3 views
-1

Я планирую запускать событие щелчка программно, когда пользователь нажимает клавишу пробела. Я использовал fireEvent ('click'), он работает для chrome, но не работает для IE-11. Я также пробовал, dispatchEvent для IE, но он бросает ошибку: «элемент не поддерживает метод или свойство dispatchEvent». Ниже приведен код.fireEvent ('click') не работает в IE11 - Extjs

onCustomRender: function(thisEl, args){ 
    var fetchTrigger = thisEl.getTrigger('fetchID 
    fetchTrigger.el.on('keydown',function(e,thisEl){ 
      if (e.keyCode === 32) { 

       //fetchTrigger.el.fireEvent('click'); //this is working in chrome //not working in IE and did not throwing error. 

       var evObj = document.createEvent('MouseEvents'); 
       evObj.initEvent('click', true, false); 
       fetchTrigger.el.dispatchEvent(evObj); 
      } 
     }); 
} 

Пожалуйста, помогите Заранее спасибо

+2

Почему? Просто вызовите функцию, которую вы хотите запустить напрямую. –

+0

Спасибо, что сработал –

ответ

0

Прежде всего у вас есть ошибка синтаксиса в коде, при условии ... Вызов функции непосредственно проще (как сказал Эван), но если вы хотите сохранить логика в контроллере вы можете запускать события. Иначе вам нужен какой-то уродливый код, чтобы сначала получить контроллер, а затем вызвать метод ...

Мне не нравятся события пожара и прикрепление слушателей к «Ext.dom.Element», если вам не нужно. Просто используйте ваши доб элементы ..

Вот что я хотел бы сделать:

onCustomRender: function(thisEl, args){ 
    var fetchTrigger = thisEl.getTrigger('fetchID'); 
    fetchTrigger.on('keydown',function(trigger, e){ 
     if (e.keyCode === 32) { 
      trigger.fireEvent('click', trigger); 
     } 
    }); 
} 

Или еще лучше, использовать контроллер:

реализации слушателей

init: function() { 
    this.control({ 
     '#fetchID': { //you can optimize the componentQuery 
      keydown: this.onTriggerKeyDown, 
      click: this.onTriggerClick 
     } 
    }); 

}, 

и методы, подобные этому:

onTriggerKeyDown: function(trigger, e){ 
    if (e.keyCode === 32) { 
     this.onTriggerClick(trigger); 
    } 
}, 
onTriggerClick: function(trigger) { 
    //do you thing! 
} 
+0

Спасибо, что сработал –

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