extjs时间控件,仅选择年月的一处小bug

0 0 662

在extjs中,当DateField 的format属性被设置为”Y-m” 的时候,其实缺存在一个小BUG!
比如 :当你选2月份,并且当前系统 日期为 每 个月的29-31号时,BUG就出现了 ,不管你怎么选,文本框始终是3月,这样用户在这几天 就不能查看2月份或其他没有当前日期号数的月份都会出不来 .

1

1

此时需要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) {“;

 

 

留言

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>