设置日期范围与pikaday datepicker
问题描述:
我有一个预订表单,我只需要两个输入#checkin和#checkout,这就是为什么我用datepicker与daterange一切都会好的几乎有一件事是我怎么才能选择15天之间两个约会?设置日期范围与pikaday datepicker
顺便说一下我使用Pikaday datepicker
$(document).ready(function() {
$('.flexdatalist').flexdatalist({
minLength: 0,
searchContain: true,
}).on('select:flexdatalist', function() {
$('#checkin').trigger("click");
});
assignPicker = function(id, whenClosed) {
if (typeof whenClosed !== 'function') {
whenClosed = null;
}
return new Pikaday({
numberOfMonths: 2,
field: document.getElementById(id),
format: "DD.MM.YYYY",
minDate: new Date(),
firstDay: 1,
maxDate: new Date(2020, 12, 31),
onSelect: function() {
e = this.getDate();
},
onSelect: whenClosed
});
}
assignPicker('checkin', function() {
$('#checkout').trigger("click");
});
assignPicker('checkout', function() {
$('#select').trigger("click");
});
});
body {
padding: 30px;
}
input,
select {
width: 100%;
padding: 10px;
border: 1px solid #ccc;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/pikaday/1.5.1/css/pikaday.min.css" />
<link rel="stylesheet" href="https://cdn.anitur.com.tr/example/flexdatalist/flexdatalist.css" />
<div class="container">
<div class="row">
<div class="col-lg-3 col-md-3 col-sm-3">
<input type="text" name="" class='flexdatalist' data-min-length='1' list='languages' name='language' />
<datalist id="languages">
<option value="PHP">PHP</option>
<option value="JavaScript">JavaScript</option>
<option value="Cobol">Cobol</option>
<option value="C#">C#</option>
<option value="C++">C++</option>
<option value="Java">Java</option>
<option value="Pascal">Pascal</option>
<option value="FORTRAN">FORTRAN</option>
<option value="Lisp">Lisp</option>
<option value="Swift">Swift</option>
<option value="ActionScript">ActionScript</option>
</datalist>
</div>
<div class="col-lg-3 col-md-3 col-sm-3">
<input type="text" id="checkin" />
</div>
<div class="col-lg-3 col-md-3 col-sm-3">
<input type="text" id="checkout" />
</div>
<div class="col-lg-3 col-md-3 col-sm-3">
<form action="" method="get">
<select name="select" id="select">
<option value="0">Choose</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
</select>
</form>
</div>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pikaday/1.5.1/pikaday.min.js"></script>
<script src="https://cdn.anitur.com.tr/example/flexdatalist/flexdatalist.js"></script>
if you can check it out on codepen instead of stackoverflow snippet
答
你可以保存到收银台选择器的参考,然后绑定到签拣货机的onSelect
方法的功能并相应地调整结帐日期选择器。您可以(也可能应该)加载Moment.js以使日期计算更容易。 Pikaday(你正在使用)的format
属性在没有它的情况下甚至不会工作。
$(document).ready(function() {
$('.flexdatalist').flexdatalist({
minLength: 0,
searchContain: true,
}).on('select:flexdatalist', function() {
$('#checkin').trigger("click");
});
assignPicker = function(id, whenClosed) {
if (typeof whenClosed !== 'function') {
whenClosed = null;
}
return new Pikaday({
numberOfMonths: 2,
field: document.getElementById(id),
format: "DD.MM.YYYY",
minDate: new Date(),
firstDay: 1,
maxDate: new Date(2020, 12, 31),
onSelect: whenClosed
});
}
var checkoutPicker = assignPicker('checkout', function() {
$('#select').trigger("click");
});
var checkinPicker = assignPicker('checkin', function() {
var maxDate = this.getMoment().add(15, 'days');
checkoutPicker.setMaxDate(maxDate.toDate());
checkoutPicker.setMinDate(this.getDate()); // min date of checkout = checkin
checkoutPicker.setDate(null);
$('#checkout').trigger("click"); // trigger checkout picker
});
});
thanks.After签它不注重形式结账 –
我想这是关于getMoment的问题,我不想getmoment.js有什么办法没有moment.js办? –
只需将'$('#checkout')。trigger(“click”);'添加到checkin picker回调函数中。当然,你不必使用Moment.js,看看[这里](http://stackoverflow.com/questions/563406/add-days-to-javascript-date)。但是在JS中使用日期时(日光节约,闰年,时区等)需要考虑很多事情,而Moment会处理所有事情。它让生活变得更容易,所以我建议你使用它。 –