ExtJS DateField混淆了格式
ExtJS DateField confuse format
我使用Ext.form.DateField,指定格式为"d-m-Y",如下所示:
var sellingDate = new Ext.form.DateField({
fieldLabel : "Selling date",
width : 180,
name: 'sellingDate',
format: 'd-m-Y',
allowBlank : false
});
我希望这个组件在失去焦点后以给定的格式自动完成输入值。我的意思是,如果我输入文本"040212"(2012年2月4日,在我的国家,我们使用"dd-mm-YYYY"作为标准日期格式),它必须将该文本显示为"04-02-2012"
但当在DateField的事件"change"处调试时,我看到解析的Date对象是"MonApr 02 2012"。我不知道如何让它像我上面期望的那样工作。有没有任何方法可以从日期字段而不是解析的日期对象中获取原始文本?你能帮我一下吗
非常感谢!
很简单,添加altFormats配置选项:
altFormats:String用"|"分隔的多个日期格式,以尝试解析用户输入值,但它与定义的格式不匹配
//So in your case, it should be 'dmy'
var sellingDate = new Ext.form.DateField({
fieldLabel : "Selling date",
width : 180,
name: 'sellingDate',
format: 'd-m-Y',
altFormats: 'dmy',
allowBlank : false
});
无论您指定的格式如何,Ext都会将任何六位字符串解析为mmddyy
。这很不幸:-/
用于解析日期的逻辑出现在Ext.form.field.Date
或(ExtJS 3中的Ext.form.DateField
)的beforeBlur
方法中。您可以"拦截"该方法,并在解析日期之前对原始值进行自己的按摩:
Ext.onReady(function (){
(function (){
// capture the original method so we can call it later
var originalBeforeBlur = Ext.form.field.Date.prototype.beforeBlur;
Ext.override(Ext.form.field.Date, {
beforeBlur: function (){
var raw = this.getRawValue(),
match = raw.match(/^'s*('d{2})('d{2})('d{2})'s*$/);
// rearrange the date string to match what Ext expects
if (match){
raw = match[2] + match[1] + match[3];
}
this.setRawValue(raw);
originalBeforeBlur.call(this);
}
});
})();
var panel = new Ext.form.FormPanel({
title: "Enter a Date",
renderTo: Ext.getBody(),
items: {
xtype: "datefield",
format: "d-m-Y"
}
});
});
相关文章:
- 如何使用javascript或html下载PDF格式的填写表单
- 货币代码为欧元-金额的格式不应包含小数
- Json数据包含日期和时间格式
- Javascript日期格式类似于ISO,但本地
- 更改angularjs中的日期-时间格式
- 将日期时间从json转换为可读格式
- NodeJS日期格式不起作用
- 我能得到正确的格式吗
- PHP:显示sqlite数据库中的html格式数据,使用tinymce保存
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 将日期和时间转换为UTC格式的日期-Javascript
- Javascript格式UTC日期
- 元素的内容必须由格式正确的字符数据或标记组成
- Datetime格式为Friendly Time.Moment JS输出错误
- 将客户端特定的日期格式返回到服务器MVC4
- 将数字四舍五入到小数点后两位,以设置货币格式
- javascript/jquery将utc转换为短格式的本地时间
- JavaScript生成html格式的密码
- ui网格日期单元格过滤器,过滤日期格式导致显示错误的日期
- ExtJS DateField混淆了格式