2014-12-17 4 views
2

Я пытаюсь скрыть поле даты extjs при нажатии в любом месте DOM, кроме поля даты. при щелчке в любом месте в dom. Функция getClick получает вызов. На основе координат элемента страницы извлекается, а затем этот элемент объекта сравнивается с объектом поля даты. Это работает отлично, но проблема возникает, когда я снова нажимаю на кнопку выбора даты " дата-поле "получить скрыть.Скрыть DateField при нажатии в любом месте на странице

образец кода -

bodyClick: function(e){ 
     var me = this, elem, t; 
     var flag =true; 
     elem = me.getEl(); 
     for(t = Ext.dom.Element.fromPoint(e.getX(), e.getY()); t && t != null;){ 
     if (Ext.fly(elem).contains(t)){ 
      flag =false; 
     } 
     } 

     if(flag){ 
     me.hide(); 
     } 
    } 

enter image description here

Любые предложения для сокрытия DateField при щелчке в любом месте в DOM (ExtJS).

ответ

4

Вы можете попробовать это в afterRender панели или контейнер, в котором ваш компонент находится.

this.mon(Ext.getBody().getEl(), 'click', this.yourFunction, this); 

    yourFunction:function(e){ 
      var comp = Ext.ComponentQuery.query('datepicker')[0];//Get your datepicker component 
      if (Ext.fly(e.getTarget()) != comp) { //get the target using Ext.fly 
        comp.hide();    //Hide the component if the target is not the datepicker 
       } 

    } 

Надеется, что это помогает вам.

+0

Hey sreek thanks man .. Я пробовал это, но некоторые, как цель не соответствует объекту datepicker.Target дает текущий объект. В любом случае, если мы получим главный родительский объект цели, мы можем сравнить его с объектом datepicker. –

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