当前位置: 首页 > news >正文

extjs年月选择日历及通用js同步ajax调用返回json object

为什么80%的码农都做不了架构师?>>>   hot3.png

ext2,3,和4 版本 只显示年月的日期插件

前段做报表,要按年月统计结果,之前的报表用的都是这种年月选择框:c32d7a6b60d55c7bf7ce77fefcd26217a11.jpg,这在弹框里很难看,我在网上查找了很多资料,找到了别人重写的datepicker方法,开始测试没发现什么问题,后来再上线后发现只要到月底,选择偶数月份失去焦点时,输入框里的月份会自动加1,别人数这是extjs的bug,但是总不能因为是bug就不做吧,后来终于在网上查找到了插件代码,才搞定:

1:ext3版本插件

来自官方论坛:http://www.sencha.com/forum/showthread.php?74002-3.x-Ext.ux.MonthMenu

插件代码:

Ext.ux.MonthPickerPlugin = function() { 
    var picker=null; 
    var oldDateDefaults=null; 

    this.init = function(pk) { 
        picker = pk; 
        picker.onTriggerClick = picker.onTriggerClick.createSequence(onClick); 
        picker.getValue = picker.getValue.createInterceptor(setDefaultMonthDay).createSequence(restoreDefaultMonthDay); 
        picker.beforeBlur = picker.beforeBlur.createInterceptor(setDefaultMonthDay).createSequence(restoreDefaultMonthDay); 
    }; 

    function setDefaultMonthDay() { 
        oldDateDefaults = Date.defaults.d; 
        Date.defaults.d = 1; 
        return true; 
    } 

    function restoreDefaultMonthDay(ret) { 
        Date.defaults.d = oldDateDefaults; 
        return ret; 
    } 

    function onClick(e, el, opt) { 
        var p = picker.menu.picker; 
        p.activeDate = p.activeDate.getFirstDateOfMonth(); 
        if (p.value) { 
            p.value = p.value.getFirstDateOfMonth(); 
        } 

        p.showMonthPicker(); 
         
        if (!p.disabled) { 
            p.monthPicker.stopFx(); 
            p.monthPicker.show(); 
   // if you want to click,you can the dblclick event change click
            p.mun(p.monthPicker, 'click', p.onMonthClick, p); 
            p.mun(p.monthPicker, 'click', p.onMonthDblClick, p); 
            p.onMonthClick = p.onMonthClick.createSequence(pickerClick); 
            p.onMonthDblClick = p.onMonthDblClick.createSequence(pickerDblclick); 
            p.mon(p.monthPicker, 'click', p.onMonthClick, p); 
            p.mon(p.monthPicker, 'click', p.onMonthDblClick, p); 
        } 
    } 

    function pickerClick(e, t) { 
        var el = new Ext.Element(t); 
        if (el.is('button.x-date-mp-cancel')) { 
            picker.menu.hide(); 
        } else if(el.is('button.x-date-mp-ok')) { 
            var p = picker.menu.picker; 
            p.setValue(p.activeDate); 
            p.fireEvent('select', p, p.value); 
        } 
    } 

    function pickerDblclick(e, t) { 
        var el = new Ext.Element(t); 
        if (el.parent() 
            && (el.parent().is('td.x-date-mp-month') 
            || el.parent().is('td.x-date-mp-year'))) { 

            var p = picker.menu.picker; 
            p.setValue(p.activeDate); 
            p.fireEvent('select', p, p.value); 
        } 
    } 
}; 

Ext.preg('f-monthPickerPlugin', Ext.ux.MonthPickerPlugin);  

使用:

new Ext.form.DateField({  

   renderTo: document.body,  

   plugins:'monthPickerPlugin',  

    name:'month',  

    format: 'Y-m'  

});  

效果:

45093e77d02881bd7b23f5948fd3a8c9bf0.jpg

 

/** 
 *通用JS 同步ajax调用 返回json Object 
 *  
 * @param {} 
 *            urlStr 
 * @param {} 
 *            paramsStr 为字符串键值对形式“key=value&key2=value2” 
 * @return {} 返回json Object 
 */ 
function ajaxSyncCall(urlStr, paramsStr) {  
    var obj='';  
    if (window.ActiveXObject) {  
        obj = new ActiveXObject('Microsoft.XMLHTTP');  
    } else if (window.XMLHttpRequest) {  
        obj = new XMLHttpRequest();  
    }  
    obj.open('POST', urlStr, false);  
    obj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');  
    obj.send(paramsStr);  
    var result = Ext.util.JSON.decode(obj.responseText);
    return result;  
}

 

 

 

转载于:https://my.oschina.net/czpdjx/blog/1830400

相关文章:

  • OSI--------物理层 eNSP
  • MySQL windows下cmd安装操作
  • 操作系统概述
  • “小红书”——给你一记安利
  • MFC:树形控件
  • Thrift版本管理
  • 【译】Angular自动取消订阅
  • Blog-05-《一周快速上手Kotlin For Android》-之Broadcast用法
  • pandas 打开没有列名的表格,并命名
  • KVOController代码分析和踩坑
  • Shell命令 中|| 使用
  • 针对ASP.NET Core Web API的先进架构
  • plsql 表中字段及注释时为乱码
  • BAT脚本编写教程入门提高篇
  • 时间序列异常检测算法S-H-ESD
  • 「译」Node.js Streams 基础
  • CSS相对定位
  • JS基础之数据类型、对象、原型、原型链、继承
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • python 装饰器(一)
  • Python十分钟制作属于你自己的个性logo
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • vue的全局变量和全局拦截请求器
  • 彻底搞懂浏览器Event-loop
  • 关于使用markdown的方法(引自CSDN教程)
  • 京东美团研发面经
  • 实现菜单下拉伸展折叠效果demo
  • 手写一个CommonJS打包工具(一)
  • 数据结构java版之冒泡排序及优化
  • 探索 JS 中的模块化
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 交换综合实验一
  • 容器镜像
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • #宝哥教你#查看jquery绑定的事件函数
  • (3)STL算法之搜索
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (SpringBoot)第七章:SpringBoot日志文件
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (五)网络优化与超参数选择--九五小庞
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)平衡树
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • **python多态
  • .NET 表达式计算:Expression Evaluator
  • .NET 中创建支持集合初始化器的类型
  • .php文件都打不开,打不开php文件怎么办
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • [<死锁专题>]
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [AIGC] 开源流程引擎哪个好,如何选型?