如何在Dojo DateTextBox中使用不同的格式(如MM*dd*yyyy)显示日期?

taor4pac  于 2022-12-16  发布在  Dojo
关注(0)|答案(1)|浏览(174)

我需要在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;

});

ubby3x7f

ubby3x7f1#

看起来需要一个工作示例(例如,在CodePen上)才能完全了解您正在体验的内容,但当您将dojo/date/locale与dojox/mvc/at沿着使用时,以下链接可能会很有用:http://dojotoolkit.org/reference-guide/1.10/dojox/mvc/at.html#data-converter
希望这个有用。
贝斯特

相关问题