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. AndroidSdk离线下载

    http://dl.vmall.com/c00x42abt3# 关键字:android sdk 离线

  2. ArcGlobe点击IGlobeServerLayer图层读取信息

    ArcGISServer将点图层发布成Globe服务,AE开发中自定义识别工具,读取点数据信息. 1) 通过Locate方法获取图层对象,图层对象中的SearchOID就是你点中的要素Objectid ...

  3. Linux makefile教程之隐含规则九[转]

    隐含规则 ———— 在 我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是[.o] 文件,Windows下是[.o ...

  4. JDK 1.6 下载 地址

    JDK1.6官方下载_JDK6官方下载地址: http://www.java.net/download/jdk6/6u10/promoted/b32/binaries/jdk-6u10-rc2-bin ...

  5. hibernate建表多对多建表

    Student.java package cn.itcast.hiberate.sh.domain; import java.util.Set; public class Student { priv ...

  6. Linux中用stat命令查看文件时3个时间点解析

    有些时候,我们需要在Linux中使用stat命令来查看文件的详细信息.另外联想下,ls -l命令显示的是什么时间,touch命令修改文件的时间戳,修改的又是什么时间?在这里我们一起来试验下. 首先,我 ...

  7. Yii入门教程

    1准备Yii源码 首先新建helloyii目录作为Web应用的根目录,并添加到Nginx的配置文件中.然后将Yii框架源码部署到helloyii下,目录结构如下: helloyii/ |-- fram ...

  8. [转]Linux之od命令

    转自:http://os.51cto.com/art/200912/173136.htm 随着计算机飞速的发展,很多人开始学习Linux,怎样才能学好Linux,一定要学好Linux的命令.学习Lin ...

  9. 分享我的PL/SQL的优化设置,为开发全面提速

    打开[工具]–[首选项]: 1.登陆历史:勾选[存储历史]和[带口令存储],方便下次登陆,免去每次都输入密码的烦恼: 2.编辑器: a.勾选[语法高亮]允许: b.关键词大小写选择大写: c.配置自动 ...

  10. 整理string类常见方法的使用说明

    整理String类的Length().charAt().getChars().replace().toUpperCase().toLowerCase().trim().toCharArray()使用说 ...