簡體   English   中英

使用dijit.form.DateTextBox無法保留正確的時間值

[英]Using dijit.form.DateTextBox Not able to retain proper Time value

我正在使用dijit.form.DateTextBox更新我的日期字段。

<form:input id="date_id" name="date_field" path="createDate"
                                dojoType="dijit.form.DateTextBox"
                                disabled="false" constraints="{datePattern:'dd/MM/yyyy hh:mm:ss.SS'}"
                                invalidMessage="invalid" promptMessage="invalid"
                                lang="en-us" required="true"/>

現在,假設我的'createDate'值為'05/01/2012 21:10:17.287' ,但在日期文本框中顯示為'05/01/2012 12:00:00.00' '05/01/2012 21:10:17.287' '05/01/2012 12:00:00.00'
因此,在編輯此字段時,我無法保持原樣。

無論如何,我可以保留那個時間部分'21:10:17.287'

請提示。

(此解決方案適用於Dojo 1.6以上版本)

設置新值時,默認的DateTextBox會覆蓋舊值。 這意味着在設置該值時會丟失時間上下文。 如果你想做到這一點,你將不得不延長的默認行為_setValueAttr功能的DateTextBox ,因為這是設置者value領域。

這是您可以執行的操作:

declare("custom.DateTextBox", [DateTextBox], {
    _setValueAttr: function(value, priorityChange, formattedValue) {
        if(value !== undefined){
            if(typeof value == "string"){
                value = stamp.fromISOString(value);
            }
            if(this._isInvalidDate(value)){
                value = null;
            }
            if(value instanceof Date && !(this.dateClassObj instanceof Date)){
                value = new this.dateClassObj(value);
            }
        }
        if (value != null && this.value != null) {
            value.setHours(this.value.getHours());
            value.setMinutes(this.value.getMinutes());
            value.setSeconds(this.value.getSeconds());
            value.setMilliseconds(this.value.getMilliseconds());
        }
        this.value = value;
        this.inherited(arguments);
    }
});

這里發生的事情很容易,我要做的第一件事就是將新值解析為有效的Date 在替換原始值之前,我先復制時間字段(小時,分鍾,秒和毫秒)。

我還做了一個JSFiddle來演示這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM