Javascript 在模式durationflipbox中的jtsage日期框中设置时间值

Javascript 在模式durationflipbox中的jtsage日期框中设置时间值,javascript,jquery-mobile,datebox,Javascript,Jquery Mobile,Datebox,在日期框中设置时间(持续时间)值时遇到困难。一个简单的问题演示是,如果我执行以下操作: function initDuration() { this.d['header Text'] = "Set"; this.d['headerText'] = "Set Duration"; var element = 'input#'+this.element[0].id; var currentDt = $(element).datebox('getTheDate'); // ****

在日期框中设置时间(持续时间)值时遇到困难。一个简单的问题演示是,如果我执行以下操作:

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仅包含当前日期/时间;i、 我不喜欢它。该元素(在jade中)定义为:

此外,我不知道如何更改“动画框”标题。initDuration()中的第二行设置按钮的文本,但标题仍然显示“设置时间”


由于第一个问题,initDuration()中的最后两行没有执行我想要的操作。i、 e.他们只使用当前时间,不管发生什么情况。

我很抱歉,这将是一个不完整的答案,但它太长,无法发表评论

标题-改为“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处理数学运算-请注意,输入的格式必须与输出格式完全相同-它将在控件打开时读取它(或者如果控件以内联方式显示则初始化-如果以内联方式执行,则设置值“稍后”,您可以使用“刷新”方法进行更新)

值得一提的是,如果您真的、真的、真的想使用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 );
myNewDate = $(element).data( 'jtsage-datebox' ).initDate;
myNewDate.setHour( myNewDate.getHour() + 1 );
$(element).datebox( 'setTheDate', myNewDate );