2016-04-07 72 views
0

我在設置日期框中的時間(持續時間)值時遇到困難。這個問題的一個簡單的演示是,如果我這樣做:在模式持續時間中的jtsage日期框中設置持續時間值flipbox

function initDuration() { 
    this.d['header Text'] = "Set"; 
    this.d['headerText'] = "Set Duration"; 
    var element = 'input#'+this.element[0].id; 
    var currentDt = $(element).datebox('getTheDate'); 
    // *************** 
    var dt = $(element).datebox('parseDate', '%H:%M', this.element[0].value); // Where this.element[0].value = "01:00:00" 
    // *************** 
    $(element).datebox('setTheDate', this.element[0].value); 
    $(element).trigger('datebox', { 'method': 'doset' }); 
} 

dt的只包含當前的日期/時間;即jtsage不喜歡它。該元素被定義爲(玉)爲:

input.Duration(type="text" name="duration" form="form#{i}" 
    id="duration#{i}" value="#{map[i].duration}" data-role="datebox" 
    data-options= 
    '{"mode":"durationflipbox", "overrideDurationOrder":["h","i"],' 
    +' "overrideTimeFormat": "%l:%M", "minuteStep":15, "beforeOpenCallback": "initDuration"}') 

另外我不確定如何更改翻蓋標題。 initDuration()中的第二行設置按鈕的文本,但標題仍然顯示「設置時間」。

由於第一個問題,initDuration()中的最後2行沒有做到我想要的。即他們只是使用當前時間,無論發生什麼。

回答

0

我很抱歉,這將是一個不完整的答案,但它會太長的評論。

對於標題 - 給「overrideHeaderText」一個代替。我完全有可能在某個時候搞砸了,這不是我用在我自己的任何項目中的功能。

下一頁...

var dt = $(element).datebox('parseDate', '%H:%M', this.element[0].value); // Where this.element[0].value = "01:00:00" 

我想我正確讀你「DT」不包含你期待什麼。這是因爲01:00:00!=%H:%M - 要閱讀此「格式」,您需要使用「%H:%M:%S」或「%H:%M:00」(後面忽略秒字段)。

這就是說,我認爲你要做的是設置一個持續時間,這是有點不同。有幾種方法可以做到這一點 - 我注意到在功能上沒有太多的支持。最簡單的方法是設置輸入的值,並讓datebox處理數學運算 - 注意輸入到輸入的格式必須與輸出格式完全相同 - 當控件打開時它會讀取它(或者如果控件是以行內顯示的方式進行初始化 - 如果您正在進行內聯操作,並將值設置爲「later」,則可以使用「refresh」方法更新它)。

如果你真的真的想要使用setTheDate方法,持續時間模式通過比較「theDate」(公開日期,即setTheDate,getTheDate)和內部initDate暴露於API,但可以在這裏找到:

$(element).data('jtsage-datebox').initDate 

所以,在僞代碼,一個小時的持續時間

myNewDate = $(element).data('jtsage-datebox').initDate; 
myNewDate.setHour(myNewDate.getHour() + 1); 
$(element).datebox('setTheDate', myNewDate); 
相關問題