[英]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.