Extjs 单击页面中的任意位置时隐藏日期字段

Extjs 单击页面中的任意位置时隐藏日期字段,extjs,extjs4,extjs4.1,Extjs,Extjs4,Extjs4.1,我试图在DOM上单击除日期字段以外的任何位置时隐藏extjs日期字段。单击dom bodyClick中的任意位置时,单击函数get called。根据页面坐标检索元素对象,然后将此元素对象与日期字段对象进行比较。这工作正常,但每当我再次单击日期选择器“日期字段”get hide时,问题就会出现 示例代码- bodyClick: function(e){ var me = this, elem, t; var flag =true; elem = me

我试图在DOM上单击除日期字段以外的任何位置时隐藏extjs日期字段。单击dom bodyClick中的任意位置时,单击函数get called。根据页面坐标检索元素对象,然后将此元素对象与日期字段对象进行比较。这工作正常,但每当我再次单击日期选择器“日期字段”get hide时,问题就会出现

示例代码-

  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();
      }
    }


单击DOM(extJs)中的任意位置时隐藏日期字段的任何建议。

您可以在组件所在的面板或容器的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
              }

    }

希望这对你有帮助。

嘿,斯雷克,谢谢你,伙计。。我已经试过了,但是有些目标和日期选择器对象不匹配。目标给出了当前对象,不管怎样,如果我们得到了目标的顶级父对象,那么我们可以将其与日期选择器对象进行比较。