Daterangepicker 不可点击的旧日期
Daterangepicker unclickable old date
我正在使用 this JavaScript 组件来选择日期范围,但我在 UI 中遇到了问题。
如图所示,您可以 select 左侧日历中的任何日期,而我正在尝试做的是酒店预订系统。右边的日历工作得很好,而左边的则不然。我怎样才能停用或使旧日期不可点击?有破解方法吗?
HTML:
<input type="text" name="reservation" id="reservation" class="input-daterange form-control pull-right active">
初始化代码:
$('.input-daterange').daterangepicker({
"opens": "right"
});
在我的 php 文件中,我可以用这个来验证它:
$reservation = explode("-", \Request::input('reservation'));
$from = date('Y-m-d', strtotime($reservation[0]));
$to = date('Y-m-d', strtotime($reservation[1]));
$now = new DateTime("today");
$day1 = new DateTime($from);
$day2 = new DateTime($to);
$diff = date_diff($day1, $day2, true);
$days = $diff->format('%a');
if ($day1 > $day2 || $day1 < $now || $days == 0) {
echo "invalid";
}
但是如果我想直接在 UI 中执行怎么办?
下面的代码可能有效,试试这个:
var todayDate = new Date();
var todayMin = new Date(todayDate.getFullYear(), todayDate.getMonth(), todayDate.getDate(), 0, 0, 0, 0);
$('.input-daterange').daterangepicker({
"opens": "right",
"minDate": todayMin
});
你必须像下面的代码那样做:-
$(function() {
$( "#from" ).datepicker({
defaultDate: "+1w",
changeMonth: true,
numberOfMonths: 3,
onClose: function( selectedDate ) {
$( "#to" ).datepicker( "option", "minDate: 0", selectedDate );
}
});
$( "#to" ).datepicker({
defaultDate: "+1w",
changeMonth: true,
numberOfMonths: 3,
onClose: function( selectedDate ) {
$( "#from" ).datepicker( "option", "maxDate", selectedDate );
}
});
});
它将生成一个受限的日期范围。
$(".input-daterange").datepicker({dateFormat:'mm/dd/yy', minDate: new Date(2010,11,12) });
你也可以试试这个。
我正在使用 this JavaScript 组件来选择日期范围,但我在 UI 中遇到了问题。
如图所示,您可以 select 左侧日历中的任何日期,而我正在尝试做的是酒店预订系统。右边的日历工作得很好,而左边的则不然。我怎样才能停用或使旧日期不可点击?有破解方法吗?
HTML:
<input type="text" name="reservation" id="reservation" class="input-daterange form-control pull-right active">
初始化代码:
$('.input-daterange').daterangepicker({
"opens": "right"
});
在我的 php 文件中,我可以用这个来验证它:
$reservation = explode("-", \Request::input('reservation'));
$from = date('Y-m-d', strtotime($reservation[0]));
$to = date('Y-m-d', strtotime($reservation[1]));
$now = new DateTime("today");
$day1 = new DateTime($from);
$day2 = new DateTime($to);
$diff = date_diff($day1, $day2, true);
$days = $diff->format('%a');
if ($day1 > $day2 || $day1 < $now || $days == 0) {
echo "invalid";
}
但是如果我想直接在 UI 中执行怎么办?
下面的代码可能有效,试试这个:
var todayDate = new Date();
var todayMin = new Date(todayDate.getFullYear(), todayDate.getMonth(), todayDate.getDate(), 0, 0, 0, 0);
$('.input-daterange').daterangepicker({
"opens": "right",
"minDate": todayMin
});
你必须像下面的代码那样做:-
$(function() {
$( "#from" ).datepicker({
defaultDate: "+1w",
changeMonth: true,
numberOfMonths: 3,
onClose: function( selectedDate ) {
$( "#to" ).datepicker( "option", "minDate: 0", selectedDate );
}
});
$( "#to" ).datepicker({
defaultDate: "+1w",
changeMonth: true,
numberOfMonths: 3,
onClose: function( selectedDate ) {
$( "#from" ).datepicker( "option", "maxDate", selectedDate );
}
});
});
它将生成一个受限的日期范围。
$(".input-daterange").datepicker({dateFormat:'mm/dd/yy', minDate: new Date(2010,11,12) });
你也可以试试这个。