Twitter bootstrap 引导日期选择器-禁用日期-多个日期选择器
我正在为datepicker()使用一个引导插件。 当您转到上面的链接时,会有一个代码示例,说明如何制作一个简单的签入签出表单。在签出日期选择器上,签入日期选择器之前的所有日期都被禁用 在我的网站上有多个签入签出表单(用于多个房间)。每个房间都有一个入住和退房日期选择器(情侣)。所以我认为下面的代码可以做到这一点 创建一个包含页面上所有日期选择器的数组(可以是变量)。然后每2个循环一次数组,每对应用代码Twitter bootstrap 引导日期选择器-禁用日期-多个日期选择器,twitter-bootstrap,datepicker,Twitter Bootstrap,Datepicker,我正在为datepicker()使用一个引导插件。 当您转到上面的链接时,会有一个代码示例,说明如何制作一个简单的签入签出表单。在签出日期选择器上,签入日期选择器之前的所有日期都被禁用 在我的网站上有多个签入签出表单(用于多个房间)。每个房间都有一个入住和退房日期选择器(情侣)。所以我认为下面的代码可以做到这一点 创建一个包含页面上所有日期选择器的数组(可以是变量)。然后每2个循环一次数组,每对应用代码 if ($('.datepicker').length) { //get all the
if ($('.datepicker').length) {
//get all the datepickers
var IDs = [];
$(".main").find(".datepicker").each(function(){ IDs.push(this.id); });
for(j=0;j<IDs.length;j++){
var nowTemp = new Date();
var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);
var checkin = $('#'+ IDs[j]).datepicker({
onRender: function(date) {
return date.valueOf() < now.valueOf() ? 'disabled' : '';
}
}).on('changeDate', function(ev) {
var newDate = new Date(ev.date)
newDate.setDate(newDate.getDate() + 1);
checkout.setValue(newDate);
checkin.hide();
$('#'+ IDs[j+1])[0].focus();
}).data('datepicker');
var checkout = $('#'+ IDs[j+1]).datepicker({
onRender: function(date) {
return date.valueOf() <= checkin.date.valueOf() ? 'disabled' : '';
}
}).on('changeDate', function(ev) {
checkout.hide();
}).data('datepicker');
j++;
}
}
if($('.datepicker').length){
//找所有的约会挑拣者
var-id=[];
$(“.main”).find(“.datepicker”).each(函数(){IDs.push(this.id);});
对于(j=0;j我一直在研究这个问题,我想我会发布答案,以防有人看到
它通过查找具有类“datepicker”的任何项来工作。如果该项的ID以“from”结尾,它将查找ID以“to”结尾的对应项。如果ID不以“from”或“to”结尾,它将绑定普通的日期选择器
我相信jquery大师可以做得更好;-)
外部JS:
function datepickerFromTo(fromSelector, toSelector, format) {
var nowTemp = new Date();
var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);
var fromDate = $(fromSelector).datepicker({
weekStart: 1,
format: format,
onRender: function (date) {
return date.valueOf() < now.valueOf() ? 'disabled' : '';
}
}).on('show', function (ev) {
toDate.hide();
}).on('changeDate', function (ev) {
if (ev.date.valueOf() > toDate.date.valueOf()) {
var newDate = new Date(ev.date)
newDate.setDate(newDate.getDate());
toDate.setValue(newDate);
}
fromDate.hide();
$(toSelector)[0].focus();
}).data('datepicker');
var toDate = $(toSelector).datepicker({
weekStart: 1,
format: format,
onRender: function (date) {
return date.valueOf() <= fromDate.date.valueOf() ? 'disabled' : '';
}
}).on('show', function (ev) {
fromDate.hide();
}).on('changeDate', function (ev) {
toDate.hide();
}).data('datepicker');
}
函数datepickerFromTo(从选择器到选择器,格式){
var nowTemp=新日期();
var now=新日期(nowTemp.getFullYear(),nowTemp.getMonth(),nowTemp.getDate(),0,0,0);
变量fromDate=$(fromSelector).datepicker({
周开始:1,
格式:格式,
onRender:函数(日期){
返回日期.valueOf()toDate.date.valueOf()){
var newDate=新日期(ev.Date)
newDate.setDate(newDate.getDate());
toDate.setValue(newDate);
}
fromDate.hide();
$(toSelector)[0]。焦点();
}).数据(“日期选择器”);
变量toDate=$(toSelector).datepicker({
周开始:1,
格式:格式,
onRender:函数(日期){
return date.valueOf()=4&&thisId.substr(thisId.length-4)=“from”){//ID以“from”结尾-将其视为“from”日期
var idRoot=thisId.substr(0,thisId.length-4);
var toDateSelector='#'+idRoot+'to';
变量toDate=$(toDateSelector);
if(toDate.length){//找到匹配的“截止日期”
datepickerFromTo(“#”+thisId,toDateSelector,'dd/mm/yyyy');
}
}如果(!thisId.length>=2&&thisId.substr(thisId.length-2)==“to”){//绑定普通日期选择器,则排除ID以“to”日期结尾的任何内容,因为绑定“from”日期时会处理此问题。
$(此).datepicker({
周开始:1,
格式:“dd/mm/yyyy”
});
}
});
<script>
$('.datepicker').each(function() {
var thisId = $(this).attr("id");
if(thisId.length >= 4 && thisId.substr(thisId.length - 4) == "from") { // The ID ends with 'from' - treat it as a 'from' date
var idRoot = thisId.substr(0, thisId.length - 4);
var toDateSelector = '#' + idRoot + 'to';
var toDate = $(toDateSelector);
if(toDate.length) { // Found a matching 'to date'
datepickerFromTo('#' + thisId,toDateSelector,'dd/mm/yyyy');
}
} else if(!thisId.length >= 2 && thisId.substr(thisId.length - 2) == "to") { // Bind an ordinary datepicker. Exclude anything with ID ending with 'to' date as this is handled when binding 'from' date.
$(this).datepicker({
weekStart: 1,
format: 'dd/mm/yyyy'
});
}
});
</script>