我有两个输入type =“text”date-role =“datebox”
一个是开始时间。 另一个是结束时间。
我想要做的是当用户选择开始时间时,我将结束时间日期框的minHour选项更改为他们选择的小时。
这可能吗?如果是这样,怎么样?
由于
答案 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功能是否存在错误...