版权所有,转载请注明来源http://gogo1217.iteye.com,违者必究!
之前写过一个《真正的Extjs 4.2 支持时间选择的日历扩展》:http://gogo1217.iteye.com/blog/1856265。当时发现引入中文本地化资源文件后,“星期几”一律变为“y”,于是在picker组件后,照着Ext.picker.Date增加了一段本地化代码,汉化成功,并没有对细节进行探索。
今天同事提交一段代码,发现页面中的日历选择控件星期几全部变为"y"了,而月份选择则没有任何问题,这才翻翻Ext-js源码看下。
原因分析:
1、打开ext-lang-zh_CN.js源码,发现对Ext.Date的本地化是放在Ext.onReady中做的,而对Ext.picker.Date等其他的本地化是立即生效,但在Ext.picker.Date又没有覆盖dayNames,不知道他的本意是什么?
2、打开Ext.picker.Month的源码,发现在212行 beforeRender方法中,months是在创建组件的时候从Ext.Date.getShortMonthName获取的,如下图所示:
即月份本地化能成功是源于,他在组件创建的时候从Ext.Date中获取,在组件创建时,Ext.Date已经被覆写。
3、打开Ext.picker.Date源码,发现在443行beforeRender方法中,dayNames是直接获取的prototype属性,而原型中的dayNames是Ext.picker.Date加载完毕后,直接从Ext.Date中获取的,可以在Ext.picker.Date源码尾部看到,如下图所示:
Ext.picker.Date不能覆写成功的原因在于,他是在类加载完毕后,直接对原型覆写,而此时ext-lang-zh_CN.js并为对Ext.Date的属性覆写,所以获取的还是英文的描述信息。
4、在不加载中文本地化资源文件时,能正确显示英文的星期几首字母大写,但加入后却是最后一个字母,原因是ext-lang-zh_CN.js在135行对Ext.picker.Date中的getDayInitial方法覆写,改为获取dayNames最后一个字符,因此全部展现为"y”。
修改办法:
直接修改源码?这样子做法在升级的时候很不方便。
我们建议通过以下代码进行修改,在页面引入ext-lang-zh_CN.js后,我们的业务代码创建Ext.picker.Date,对Ext.picker.Date的原型属性再次修改即可。
由于Ext.Date的本地化是放在Ext.onReady中做的,因此再次覆写的时候也需要放在Ext.onReady中。
最终代码如下:
<html> <head> <title>Ext JS 4.2 Examples</title> <meta http-equiv="Context-Type" content="text/html;chartset=utf-8"> <link rel="stylesheet" type="text/css" href="resources/ext-theme-neptune/ext-theme-neptune-all.css" /> <script type="text/javascript" src="ext-all.js"></script> <script type="text/javascript" src="locale/ext-lang-zh_CN.js"></script> <script type="text/javascript"> Ext.onReady(function(){ var proto = Ext.picker.Date.prototype, date = Ext.Date; proto.monthNames = date.monthNames; proto.dayNames = date.dayNames; proto.format = date.defaultFormat; }); </script> </head> <body> </body> </html>
相关推荐
在EXT中,日期时间控件(DateTimeField)是一个非常实用的组件,允许用户选择日期和时间,从而提高用户体验和数据输入的准确性。EXT提供了丰富的UI组件,包括表格、面板、窗口、表单等,而日期时间控件则是表单组件...
- **本地化**:支持多语言,可以根据用户的浏览器设置自动调整日期和时间的显示格式。 - **事件处理**:提供丰富的事件接口,如选择更改、验证失败等,方便开发者编写相应的业务逻辑。 在"带时分秒和年月的日空间...
EXT日期时间控件2是一款基于EXT JavaScript库的高级UI组件,专为网页应用设计,用于提供用户友好的日期和时间选择功能。EXT是一个强大的前端框架,由Sencha公司开发,广泛应用于构建富互联网应用程序(RIA)。EXT的...
EXT JS 4 版本在日期控件方面提供了丰富的功能,使得开发者可以方便地处理日期和时间输入。在这个特定的资源中,我们关注的是一个集成时间选择的日期控件,这在需要精确到时、分、秒的场景下非常有用。 EXT JS 4 的...
4.0Ext 本地化的实现主要依靠其根目录下的 `/locale/` 文件夹,这个文件夹包含了多达45种语言的包,覆盖了全球大部分地区。实现本地化有两种方式:静态和动态。静态本地化通常是在开发阶段就确定好语言设置,而动态...
EXT日期加时间控件 EXT日期加时间控件
本控件名为"EXT下拉日期时间控件",具有高度可定制性和灵活性,能够满足开发者对日期时间选择的精确需求。 该控件的独特之处在于它可以将日期和时间精确到秒,这意味着用户可以选择一个特定的日期,然后在时间部分...
这个"EXT 4.0 日期选择控件 时分秒 中文版"显然是一个经过本地化处理的版本,支持中文显示,并且在选择日期的同时还能选择具体的时间,精确到时、分、秒。 日期选择控件在Web应用中非常常见,用于用户输入或选择...
"Extjs日期控件汉化版"就是针对这个需求,提供了一个已经进行了中文语言转换的版本,使得日期控件的标签、提示信息和日期格式都符合中文语境。 在ExtJS中,日期控件通常用`Ext.form.field.Date`类来创建。这个控件...
在EXTJS框架中,时间日期选择控件是一个重要的组件,特别是在构建用户界面时,需要用户输入精确的时间或日期信息。EXTJS 5.0及更高版本提供了更丰富的功能和改进的用户体验,使得开发者能够创建更加直观和用户友好的...
总的来说,`Ext日期时间控件`和`Spinner控件`是`ExtJS`框架中不可或缺的组件,它们极大地增强了用户界面的交互性和数据操作的便利性。结合`Grid`使用,开发者可以构建出高效且用户友好的数据管理界面。通过不断探索...
在IT行业中,日历控件是一种常见的用户界面元素,它允许用户方便地选择日期或进行日期相关的操作。本文将深入探讨“不错的日历控件”,特别是基于JavaScript和EXT技术实现的这种控件。 首先,JavaScript是一种广泛...
3. **多语言支持**:EXT 支持多种语言,时间控件可以根据用户浏览器的设置显示对应的语言。 4. **样式可定制**:EXT 提供了丰富的主题,开发者可以通过CSS来调整时间控件的外观以符合整体应用的风格。 5. **事件...
总的来说,`Ext`框架中的`dateField`扩展为开发者提供了强大的工具,使他们能够创建适应各种场景的时间选择控件,不仅满足基本的日期输入需求,还能提供更加精细化和定制化的用户体验。通过深入学习和理解`...
"ext4.2 日历日期控件,可以选择时分秒"是一个专门针对这个需求的组件,它允许用户在网页应用中方便地选择日期、时间和秒数。这个控件是EXTJS库的一个组成部分,EXTJS是一个基于JavaScript的富客户端应用框架,广泛...
4. **日期时间格式化**:在ExtJS中,日期和时间的格式化使用`Ext.util.Format.date`函数,可以定制如"YYYY-MM-DD HH:mm:ss"这样的输出格式。在日期时间控件中,可以通过`format`配置项来设置显示和解析的日期时间...
综上所述,EXT JS中的日期控件扩展是解决日期时间选择问题的关键,开发者需要理解EXT JS的组件体系,熟练运用继承和扩展机制,以创建或定制满足特定需求的DateTimeField控件。这不仅提高了用户体验,也丰富了EXT JS...
ext 的中文语言包extext的中文语言包extext的中文语言包extext
日期控件在IT界是网页开发中不可或缺的一部分,主要用于用户输入或选择日期的交互界面。在给定的信息中,我们关注的是两种特定的日期控件:EXT和My97。这两种控件都提供了不同的视觉风格和用户体验,以适应不同的...
在3.0版本中,它提供了丰富的UI组件,包括日期时间控件。这个控件是开发人员在网页应用中处理日期和时间输入的重要工具,尤其适用于需要用户输入特定日期或时间的情况。 标题中的"extjs3.0 日期时间控件"指的是...