extjs时间控件,仅选择年月的一处小bug
在extjs中,当DateField 的format属性被设置为”Y-m” 的时候,其实缺存在一个小BUG!
比如 :当你选2月份,并且当前系统 日期为 每 个月的29-31号时,BUG就出现了 ,不管你怎么选,文本框始终是3月,这样用户在这几天 就不能查看2月份或其他没有当前日期号数的月份都会出不来 .
此时需要extjs的源代码(extjs下ext-all.js 或 ext-all-debug.js,具体看你引用哪个),
在extjs3.1版本中,找到 “y = Ext.num(y, Ext.num(def.y, dt.getFullYear()));”,
“m = Ext.num(m, Ext.num(def.m – 1, dt.getMonth()));”,
“d = Ext.num(d, Ext.num(def.d, dt.getDate()));”,
修改为 “y = Ext.num(y, Ext.num(def.y, dt.getFullYear()));”,
“m = Ext.num(m, Ext.num(def.m – 1, dt.getMonth()));”,
“d = Ext.num(d, Ext.num(def.d, 1));”即可(默认部位当前日期,而是1号)
其他版本原理一样,修改如下
var code = “Date.” + funcName + ” = function(input){\n”
+ “var y, m, d, h = 0, i = 0, s = 0, ms = 0, o, z, u, v;\n”
+ “input = String(input);\n”
+ “d = new Date();\n”
+ “y = d.getFullYear();\n”
+ “m = d.getMonth();\n”
+ “d = 1;\n” //原代码 + “d = d.getDay();\n”
+ “var results = input.match(Date.parseRegexes[" + regexNum + "]);\n”
+ “if (results && results.length > 0) {“;


