我需要在Dojo dateTextBox中根据用户偏好显示日期,如...
如果用户希望以MMddyyyy格式显示日期,则Dojo dateTextBox应以此格式显示。
分隔符可以根据用户的不同从“/”更改为“-”再更改为“*”。
我有下面的代码:
定义([“dojo/_base/声明,”“dijit/form/日期文本框,”“dojo/日期/区域设置,”“cgi/ec/mvc/_未保存更改侦听器混合,”“cgi/ec/mvc/_未保存更改禁用侦听器混合,”“dojo/域类,”“dojo/_base/config,”“dojox/mvc/at”],函数(声明,日期文本框,区域设置,_未保存更改侦听器混合,_未保存更改禁用侦听器混合,域类,配置,at){ var _日期文本框= declare(“cgi.ec.form.日期文本框”,[日期文本框,_未保存的更改侦听器混合,_未保存的更改禁用的侦听器混合],{检查更改:假,允许未来日期:真,附加类:零,
constructor: function(params, srcNodeRef){
declare.safeMixin(this, params, srcNodeRef);
var oldValue = this.value;
if ( oldValue && oldValue.atsignature == 'dojox.mvc.at') {
this.value = _DateTextBox.at(oldValue.target, oldValue.targetProp);
}
},
_setValueAttr: function(value, priorityChange, formattedValue){
var strValue = null;
if(value !== undefined){
if(typeof value == "string"){
strValue = value;
value = locale.parse(value, _DateTextBox.cacsFormat);
}
}
this.inherited(arguments, [value, priorityChange, formattedValue]);
},
serialize: function(dateObject, options){
var serialDate = locale.format(dateObject, _DateTextBox.cacsFormat).toUpperCase();
return serialDate;
},
postCreate: function(){
this.inherited(arguments);
var dateBox = this;
if (!dateBox.allowFutureDate) {
dateBox.constraints.max = config.cgiConfig.systemDate;
}
},
startup: function(){
this.inherited(arguments);
var dateBox = this;
if (dateBox.checkForChanges) {
domClass.add(dateBox.id, "checkForChangesOnSave");
}
if (dateBox.additionalClasses) {
domClass.add(dateBox.id, dateBox.additionalClasses);
}
}
});
_DateTextBox.cacsFormat = {selector: 'date', datePattern: 'MM/dd/yyyy', locale: 'en-us'};
_DateTextBox.parse = function(dateStr){
var date;
if(typeof value == "string"){
date = locale.parse(dateStr, _DateTextBox.cacsFormat);
} else {
date = dateStr;
}
return date;
}
_DateTextBox.at = function(context, prop){
return at(context, prop).transform({
parse: function(value){
if( value ){
var strValue = locale.format(value, _DateTextBox.cacsFormat).toUpperCase();
return strValue;
} else {
return value;
}
}
});
}
return _DateTextBox;
});
1条答案
按热度按时间ubby3x7f1#
看起来需要一个工作示例(例如,在CodePen上)才能完全了解您正在体验的内容,但当您将dojo/date/locale与dojox/mvc/at沿着使用时,以下链接可能会很有用:http://dojotoolkit.org/reference-guide/1.10/dojox/mvc/at.html#data-converter
希望这个有用。
贝斯特