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. Spring3.0将全面支持REST

    Rod Johnson上个月底说,Spring 3.0全面支持REST风格的Web服务. "We're really seeing extensive interest and growth ...

  2. ubuntu切换root

    sudo passwd root这个命令是给root用户设定密码.然后su root切换到root用户.

  3. JDK 1.6 下载 地址

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

  4. POJ 2241 Mondriaan's Dream

    题意:给一块n×m的空地,用1×2的砖铺,有多少种方案. 解法:状压dp.考虑dp[i][j]表示前i - 1行都铺满时第i行的状态为j时的方案数.对于第i行,每个格子上是否有砖用0和1表示,0表示不 ...

  5. 把一个序列转换成严格递增序列的最小花费 CF E - Sonya and Problem Wihtout a Legend

    //把一个序列转换成严格递增序列的最小花费 CF E - Sonya and Problem Wihtout a Legend //dp[i][j]:把第i个数转成第j小的数,最小花费 //此题与po ...

  6. 150个JS特效脚本

    收集了其它一些不太方便归类的JS特效,共150个,供君查阅. 1. simplyScroll simplyScroll这个jQuery插件能够让任意一组元素产生滚动动画效果,可以是自动.手动滚动,水平 ...

  7. 《Java数据结构与算法》笔记-CH5-链表-3双端链表

    /** * 双端链表的实现 */ class LinkA { public long dData; public LinkA next; public LinkA(long d) { dData = ...

  8. 【转】eclipse.ini内存设置

    -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M 这里有几个问题:1. 各个参数的含义什么?2. 为什么有的机器我将-Xm ...

  9. ubuntu 安装ssh-server时出现错误:openssh-server: Depends: openssh-client (= 1:5.3p1-3ubuntu3) but 1:5.3p1-3ubuntu4 is to be installed

    错误如下: tiger@ubuntu:~/Desktop/work$ sudo apt-get install openssh-server [sudo] password for tiger: Re ...

  10. oracle不用tsname文件的时候着怎么办

    oracle\product\10.2.0\client_2\odp.net\PublisherPolicy\Policy.9.2.Oracle.DataAccess.config 找到newVers ...