如何动态设置jquery mobile的datebox的minHour选项

时间:2013-11-26 22:27:44

标签: javascript jquery-mobile datebox

我有两个输入type =“text”date-role =“datebox”

一个是开始时间。 另一个是结束时间。

我想要做的是当用户选择开始时间时,我将结束时间日期框的minHour选项更改为他们选择的小时。

这可能吗?如果是这样,怎么样?

由于

1 个答案:

答案 0 :(得分:2)

从我可以看到minHour似乎默认时间选择器弹出到正确的时间,但它然后让你选择一个较早的小时。如果您选择的时间早于minHour,则日期框会显示较早的小时,但是当您调用datebox('getTheDate')时;它返回minHour。所以我想出了一个可以为你完成工作的解决方法。

这是 DEMO

每个日期框都有onclose回调:

<input name="Date1" id="Date1" type="date" data-role="datebox" 
data-options='{"mode": "timebox", "closeCallback": "Date1Close();"}' /> 
...
<input name="Date2" id="Date2" type="date" data-role="datebox" 
data-options='{"mode": "timebox", "closeCallback": "Date2Close();"}' /> 

starttime上的回调获取所选时间的小时,然后将endtime框的minHour设置为该小时+ 1.然后'workaround'是endtime的回调,它将框的时间设置为框的'getTheDate'是为了纠正显示。

function Date1Close(){
    var startdate = $('#Date1').datebox('getTheDate');
    var minH = startdate.getHours() + 1;
    if (minH > 23) minH = 23;
    $('#Date2').datebox({"minHour": minH});
}

function Date2Close(){
    var enddate = $('#Date2').datebox('getTheDate');
    $('#Date2').datebox('setTheDate', enddate);
    $('#Date2').trigger('datebox', {'method':'doset'});
}

在第二个回调中,您还可以将结束时间与startime进行比较,如果end小于start,则将第二个datebox设置为starttime。

您可能需要与Datebox开发人员联系,以了解minHour功能是否存在错误...