我在日期框中设置时间(持续时间)值时遇到困难。这个问题的简单演示就是我做了类似的事情:
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()中的最后两行不能达到我想要的效果。即他们只是使用当前时间,无论发生什么。
答案 0 :(得分:0)
我很抱歉这将是一个不完整的答案,但是评论的时间太长了。
对于标题 - 给" overrideHeaderText"一个镜头而不是。我完全有可能在某些时候搞砸了它,这不是我在任何一个项目中使用的功能。
下一步...
var dt = $(element).datebox('parseDate', '%H:%M', this.element[0].value); // Where this.element[0].value = "01:00:00"
我想我正确地读到你了#34; dt"并不包含您的期望。这是因为01:00:00!=%H:%M - 要阅读此格式"格式",您需要使用"%H:%M: %S"或者"%H:%M:00" (后者忽略秒字段)。
那就是说,我认为你想要做的是设定一个持续时间,这有点不同。有几种方法可以做到 - 而且我注意到在功能上没有很多支持。最简单的方法是设置输入的值,让datebox处理数学 - 只需要知道输入到输入的格式必须与输出格式完全相同 - 它会在控件打开时读取它(或者如果控件以内联方式显示,则进行初始化 - 如果您正在内联显示,并设置值"稍后",则可以使用“刷新”方法对其进行更新。 / p>
对于它的价值,如果你真的,真的,真的想要使用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 );