1  依据选择的日期,加载相应的列表数据,如图:


 

开发说明

   1 开发思路: 在日期值变化的事件中获得选择后的日期值,传给后台,然后从后台加载相应的数据

2 问题:在查看extjs2.2 的api的官方说明文档,文档对datefield组件的change事件说明如下:

change : ( Ext.form.Field this, Mixed newValue, Mixed oldValue )
       Fires just before the field blurs if the field value has changed.

这句话是说值发生变化,并且在失去焦点之前触发此事件,也就是说如果此日期组件的值发生变化,而焦点并没有失去,这个事件也就不会触发。通过我们的程序验证,事实也的确如此。我们需要值发生变化就要触发相应的事件。

3 解决方法:

从源头找事件:是用户点击相应的日期,才导致文本框里的值发生变换。可以捕获这个点击选择事件,通过这个事件我们得到日期值,传给后台,加载列表数据

4 具体做法:

继承Ext.form.DateField,覆盖menuListeners这个私有监听器属性,封装类如下:

  1. Ext.form.CustomDateField = Ext.extend(Ext.form.DateField,  {
  2. // private
  3. readOnly: true,
  4. setValueFn:null,
  5. menuListeners : {
  6. select: function(m, d){
  7. this.setValue(d);
  8. if(this.setValueFn)
  9. this.setValueFn.call(this,this.formatDate(this.parseDate(d)));
  10. },
  11. show : function(){
  12. this.onFocus();
  13. },
  14. hide : function(){
  15. this.focus.defer(10, this);
  16. var ml = this.menuListeners;
  17. this.menu.un("select", ml.select,  this);
  18. this.menu.un("show", ml.show,  this);
  19. this.menu.un("hide", ml.hide,  this);
  20. }
  21. }
  22. });
  23. Ext.reg('customDateField', Ext.form.CustomDateField);
  1. Ext.form.CustomDateField = Ext.extend(Ext.form.DateField,  {
  2. // private
  3. readOnly: true,
  4. setValueFn:null,
  5. menuListeners : {
  6. select: function(m, d){
  7. this.setValue(d);
  8. if(this.setValueFn)
  9. this.setValueFn.call(this,this.formatDate(this.parseDate(d)));
  10. },
  11. show : function(){
  12. this.onFocus();
  13. },
  14. hide : function(){
  15. this.focus.defer(10, this);
  16. var ml = this.menuListeners;
  17. this.menu.un("select", ml.select,  this);
  18. this.menu.un("show", ml.show,  this);
  19. this.menu.un("hide", ml.hide,  this);
  20. }
  21. }
  22. });
  23. Ext.reg('customDateField', Ext.form.CustomDateField);

5 使用这个自定义的组件:

例:

  1. {
  2. fieldLabel : '计划开始日期',
  3. vtype : 'isBlank',
  4. xtype : 'datefield',
  5. xtype : 'customDateField',
  6. setValueFn:function(value){
  7. alert(value);
  8. },
  9. format : 'Y-m-d'
  10. }
  1. {
  2. fieldLabel : '计划开始日期',
  3. vtype : 'isBlank',
  4. xtype : 'datefield',
  5. xtype : 'customDateField',
  6. setValueFn:function(value){
  7. alert(value);
  8. },
  9. format : 'Y-m-d'
  10. }

这种方法不好的地方,就是覆盖了extjs提供的私有属性menuListeners,不知路过的朋友,有没有比较好的解决办法

EXTJS项目实战经验总结一:日期组件的change事件:的更多相关文章

  1. Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码)

    Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码)    转 https://blog.csdn.net/lhl1124281072/article/details/800 ...

  2. vue项目实战经验汇总

    目录 1.vue框架使用注意事项和经验 1.1 解决Vue动态路由参数变化,页面数据不更新 1.2 vue组件里定时器销毁问题 1.3 vue实现按需加载组件的两种方式 1.4 组件之间,父子组件之间 ...

  3. 给缺少Python项目实战经验的人

    我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用 ...

  4. 干货: 可视化项目实战经验分享,轻松玩转 Bokeh (建议收藏)

    作者 | Will Koehrsen 翻译 | Lemon 译文出品 | Python数据之道 (ID:PyDataRoad) 本文通过一个项目案例,详细的介绍了如何从 Bokeh 基础到构建 Bok ...

  5. extJs项目实战

    extjs是因为在公司用到一次,也是公司唯一一个extjs的项目,当时拿到这个需求的时候,我有点懵逼,这他妈的什么鬼,参加工作两年不到的纯小白,没办法,这是工作,必须要完成的.硬着头皮做吧,好在最后弄 ...

  6. mysql项目实战经验

    一.项目的编码设置   目的:避免出现莫名其妙错误,笔者曾经就碰到因编码不对返回null而浪费大量时间:统一的编码可以减少解析的时间,提高效率 1.1修改my.ini文件 一般在C:\Program ...

  7. Java Swing实战(四)按钮组件JButton及其事件监听

    接下来为面板添加保存按钮,并为按钮绑定事件监听. /** * @author: lishuai * @date: 2018/11/26 13:51 */ public class WeimingSyn ...

  8. 如何在element-UI 组件的change事件中传递自定义参数

    以select为例,如果select写在循环里,触发change事件时可能不只需要传递被选中项的值,还要传递index过去,来改变同一循环中的其他标签的状态. 下面这样写是无效的: @change=& ...

  9. selenium项目的实战经验

    以前学习selenium,最接近项目的经验就是写了百度首页和自己开发的一个小网站的脚本,当时觉得差不多可以了.然而这次项目实战才发现还是学到不少知识,毕竟这个网站的专业程度远超过我自己写的,而且复杂程 ...

随机推荐

  1. JS面向对象的学习

    1.面向对象 var arr = new Array(); //[] //我们把系统自带的对象,叫做系统对象 var arr = []; arr.number = ; //对象下面的变量:叫做对象的属 ...

  2. 嵌入式 C 语言的可变参数表函数的设计

    首先在介绍可变参数表函数的设计之前,我们先来介绍一下最经典的可变参数表printf函数的实现原理.一.printf函数的实现原理在C/C++中,对函数参数的扫描是从后向前的.C/C++的函数参数是通过 ...

  3. Ubuntu 安装

    最近又有工作需要,又需要在虚拟机上工作了.记得上次使用Ubuntu的时候还是7,8年前呢 用的是vmware 7 ,buntu的版本记不清了.时隔多年又捡起来了,记忆还停留在过去,于是被折腾惨了. 1 ...

  4. Yii系列教程(四):使用Memcache保存会话

    1环境准备 安装Memcached服务端: yum -y installmemcached.x86_64 安装PHP-Memcache扩展: yum -y installphp-pecl-memcac ...

  5. 在Mac OS X 通过抓包、“第三方下载工具”加速下载、安装APP或系统

    #!/bin/bash ######################################################################################## ...

  6. 标准IO

    标准IO由ISO C 标准的IO库,它处理了很多底层细节,比如合适的缓冲大小等等,因此更易于使用,但是也引入了一些其他问题. 流向 标准IO使用FILE对象关联流,流可以是面向宽字节的也可以是面向单字 ...

  7. 记一个社交APP的开发过程——基础架构选型(转自一位大哥)

    记一个社交APP的开发过程——基础架构选型 目录[-] 基本产品形态 技术选型 最近两周在忙于开发一个社交App,因为之前做过一点儿社交方面的东西,就被拉去做API后端了,一个人头一次完整的去搭这么一 ...

  8. SQL存儲過程的調試方法

    1.在vs2010调试存储过程步骤如下:(要點:連接登陸賬號的權限必須是管理員,才能單步調試,否則只能直接執行存儲過程:[因此,此方式適合數據庫和vs裝在同一台電腦上]) 1.1首先,打开vs,点击 ...

  9. jQuery hover demo

    先放效果图: 百度云下载地址:http://pan.baidu.com/s/1dDpn1Sl 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTM ...

  10. linux中的配置文件

    /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置. /etc/bashrc:为每一个 ...