Javascript jQuery日期选择器在范围选择和单一日期选择之间切换
我使用Datepicker在单程和往返巴士行程的日期选择之间切换Javascript jQuery日期选择器在范围选择和单一日期选择之间切换,javascript,jquery,jquery-ui,datepicker,Javascript,Jquery,Jquery Ui,Datepicker,我使用Datepicker在单程和往返巴士行程的日期选择之间切换 函数datecalendar用于round并从round div启动,而datecalendar1用于单向并从“from”div启动 这两个函数都在第一个实例上正确执行 但是,如果我首先选择任何函数,比如说为单向选择datecalendar1,它可以正常工作,但是在选择之后,如果我单击return div(范围选择的onclickdatecalendar),它将连接到该函数上)然后,静态日期选择器通过单个日期选择启动,而不是像on
datecalendar
用于round并从round div启动,而datecalendar1
用于单向并从“from”div启动datecalendar1
,它可以正常工作,但是在选择之后,如果我单击return div(范围选择的onclickdatecalendar
),它将连接到该函数上)然后,静态日期选择器通过单个日期选择启动,而不是像onclick附加的datecalendar
函数中那样的范围
<script type="text/javascript">
function datecalendar () {
$.datepicker._clearDate('#datesearchdiv');
$.datepicker._defaults.onAfterUpdate = null;
var datepicker__updateDatepicker = $.datepicker._updateDatepicker;
$.datepicker._updateDatepicker = function(inst) {
datepicker__updateDatepicker.call(this, inst);
var onAfterUpdate = this._get(inst, 'onAfterUpdate');
if (onAfterUpdate) onAfterUpdate.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : ''), inst]);
}
$(function() {
var cur = -1,
prv = -1;
$('#datesearchdiv')
.datepicker({
numberOfMonths: [12, 1],
changeMonth: true,
changeYear: true,
minDate: 0,
beforeShowDay: function(date) {
return [true, ((date.getTime() >= Math.min(prv, cur) && date.getTime() <= Math.max(prv, cur)) ? 'date-range-selected' : '')];
},
onSelect: function(dateText, inst) {
var d1, d2;
prv = cur;
cur = (new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay)).getTime();
if (prv == -1 || prv == cur) {
prv = cur;
$('#departdate').val(dateText);
} else {
d1 = $.datepicker.formatDate('dd/mm/yy', new Date(Math.min(prv, cur)), {});
d2 = $.datepicker.formatDate('dd/mm/yy', new Date(Math.max(prv, cur)), {});
var d11 = $.datepicker.formatDate('mm/dd/yy', new Date(Math.min(prv, cur)), {});
var d22 = $.datepicker.formatDate('mm/dd/yy', new Date(Math.max(prv, cur)), {});
$('#departdate').val(d1);
$('#returndate').val(d2);
spandateupdate(d11, d22);
}
},
onChangeMonthYear: function(year, month, inst) {
//prv = cur = -1;
},
})
.position({
my: 'left top',
at: 'left bottom',
of: $('#departdate')
})
.hide();
$('#departdate').on('focus', function(e) {
var v = this.value,
d;
try {
if (v.indexOf(' - ') > -1) {
d = v.split(' - ');
prv = $.datepicker.parseDate('mm/dd/yy', d[0]).getTime();
cur = $.datepicker.parseDate('mm/dd/yy', d[1]).getTime();
} else if (v.length > 0) {
prv = cur = $.datepicker.parseDate('mm/dd/yy', v).getTime();
}
} catch (e) {
cur = prv = -1;
}
if (cur > -1) $('#datesearchdiv').datepicker('setDate', new Date(cur));
$('#datesearchdiv').datepicker('refresh').show();
showdatespan();
});
});
document.getElementById("departdate").focus();
document.getElementById("departdate").select();
}
</script>
<script type="text/javascript">
function datecalendar1 () {
$.datepicker._defaults.onAfterUpdate = null;
var datepicker__updateDatepicker = $.datepicker._updateDatepicker;
$.datepicker._updateDatepicker = function(inst) {
datepicker__updateDatepicker.call(this, inst);
var onAfterUpdate = this._get(inst, 'onAfterUpdate');
if (onAfterUpdate) onAfterUpdate.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : ''), inst]);
}
$(function() {
var cur = -1,
prv = -1;
$('#datesearchdiv')
.datepicker({
numberOfMonths: [12, 1],
changeMonth: true,
changeYear: true,
minDate: 0,
beforeShowDay: function(date) {
return [true, ((date.getTime() === Math.min(cur)) ? 'date-range-selected' : '')];
},
onSelect: function(dateText, inst) {
var d1;
prv = cur;
cur = (new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay)).getTime();
if (prv == -1 || prv == cur) {
prv = cur;
$('#departdate').val(dateText);
} else {
d1 = $.datepicker.formatDate('dd/mm/yy', new Date(Math.min( cur)), {});
var d11 = $.datepicker.formatDate('mm/dd/yy', new Date(Math.min( cur)), {});
$('#departdate').val(d1);
spandateupdate1(d11);
}
},
onChangeMonthYear: function(year, month, inst) {
//prv = cur = -1;
},
})
.position({
my: 'left top',
at: 'left bottom',
of: $('#departdate')
})
.hide();
$('#departdate').on('focus', function(e) {
var v = this.value,
d;
try {
if (v.indexOf(' - ') > -1) {
d = v.split(' - ');
prv = $.datepicker.parseDate('mm/dd/yy', d[0]).getTime();
cur = $.datepicker.parseDate('mm/dd/yy', d[1]).getTime();
} else if (v.length > 0) {
prv = cur = $.datepicker.parseDate('mm/dd/yy', v).getTime();
}
} catch (e) {
cur = prv = -1;
}
if (cur > -1) $('#datesearchdiv').datepicker('setDate', new Date(cur));
$('#datesearchdiv').datepicker('refresh').show();
showdatespan();
});
});
document.getElementById("departdate").focus();
document.getElementById("departdate").select();
}
</script>
函数datecalendar(){
$.datepicker._clearDate('#datesearchdiv');
$.datepicker.\u defaults.onAfterUpdate=null;
var datepicker\uu updateDatepicker=$.datepicker.\u updateDatepicker;
$.datepicker.\u updateDatepicker=函数(inst){
datepicker\uuuu updateDatepicker.call(这个,inst);
var onAfterUpdate=this._get(inst'onAfterUpdate');
if(onAfterUpdate)onAfterUpdate.apply((inst.input?inst.input[0]:null),[(inst.input?inst.input.val():“”),inst]);
}
$(函数(){
var cur=-1,
prv=-1;
$(“#datesearchdiv”)
.日期选择器({
月数:[12,1],
变化月:对,
变化年:是的,
minDate:0,
beforeShowDay:功能(日期){
返回[true,((date.getTime()>=Math.min(prv,cur)和&date.getTime()-1){
d=v.分裂('-');
prv=$.datepicker.parseDate('mm/dd/yy',d[0]).getTime();
cur=$.datepicker.parseDate('mm/dd/yy',d[1]).getTime();
}否则如果(v.length>0){
prv=cur=$.datepicker.parseDate('mm/dd/yy',v.getTime();
}
}捕获(e){
cur=prv=-1;
}
如果(cur>-1)$(“#datesearchdiv”).datepicker('setDate',new Date(cur));
$('#datesearchdiv').datepicker('refresh').show();
showdatespan();
});
});
document.getElementById(“departdate”).focus();
document.getElementById(“departdate”).select();
}
函数datecalendar1(){
$.datepicker.\u defaults.onAfterUpdate=null;
var datepicker\uu updateDatepicker=$.datepicker.\u updateDatepicker;
$.datepicker.\u updateDatepicker=函数(inst){
datepicker\uuuu updateDatepicker.call(这个,inst);
var onAfterUpdate=this._get(inst'onAfterUpdate');
if(onAfterUpdate)onAfterUpdate.apply((inst.input?inst.input[0]:null),[(inst.input?inst.input.val():“”),inst]);
}
$(函数(){
var cur=-1,
prv=-1;
$(“#datesearchdiv”)
.日期选择器({
月数:[12,1],
变化月:对,
变化年:是的,
minDate:0,
beforeShowDay:功能(日期){
返回[true,((date.getTime()==Math.min(cur))?“所选日期范围”:“”);
},
onSelect:函数(日期文本,inst){
变量d1;
prv=cur;
cur=(新日期(inst.selectedYear、inst.selectedMonth、inst.selectedDay)).getTime();
如果(prv==1 | | prv==cur){
prv=cur;
$('departdate').val(dateText);
}否则{
d1=$.datepicker.formatDate('dd/mm/yy',新日期(Math.min(cur)),{};
var d11=$.datepicker.formatDate('mm/dd/yy',新日期(Math.min(cur)),{};
$('出发日期').val(d1);
拱肩1(d11);
}
},
onChangeMonthYear:功能(年、月、月){
//prv=cur=-1;
},
})
.职位({
我的‘左上’,
在“左下角”,
共:$(“#出发日期”)
})
.hide();
$('departdate')。关于('focus',函数(e){
var v=该值,
D
试一试{
如果(v.indexOf('-')>-1){
d=v.分裂('-');
prv=$.datepicker.parseDate('mm/dd/yy',d[0]).getTime();
cur=$.datepicker.parseDate('mm/dd/yy',d[1]).getTime();
}否则如果(v.length>0){
prv=cur=$.datepicker.parseDate('mm/dd/yy',v.getTime();
}
}捕获(e){
cur=prv=-1;
}
如果(cur>-1)$(“#datesearchdiv”).datepicker('setDate',new Date(cur));
$('#datesearchdiv').datepicker('refresh').show();
showdatespan();
});
});
document.getElementById(“departdate”).focus();
document.getElementById(“departdate”).select();
}