您好我制作了一个日历供您帮助。
然而,要与之比较的if语句不正确。
规则是
我们假设选择了From和To。
然后,如果起始日期大于到日期,则必须在比起日期晚3个月的日期设置日期。但如果没有,则不需要更改日期。
我不知道为什么if语句不起作用。
是否有调试工具?喜欢PHP中的debug()吗?
请告诉我。
谢谢
$(function () {
$("#from").datepicker({
maxDate: 0,
showButtonPanel : true,
closeText : 'Reset',
onClose: function () {
var today = new Date();
var from = $('#from').datepicker('getDate');
var from3 = from;
from3.setMonth(from3.getMonth() + 3);//3 month limit
var to = $('#to').datepicker('getDate');
var tdate = $("#from").datepicker("getDate");
if(to == ""){
$("#from").datepicker("option", "maxDate", today);
}
else{
if ($(window.event.srcElement).hasClass('ui-datepicker-close')) {
$.datepicker._clearDate(this);
$("#from").datepicker("option", "maxDate", today);
}
$("#from").datepicker("option", "maxDate", today);
tdate.setMonth(tdate.getMonth() + 3);
tdate = (tdate>today) ? today : tdate;
$("#to").datepicker("option", "maxDate", tdate);
if(from3 > to){
$('#to').datepicker('setDate', from3);
}
else if(from > to){
$('#to').datepicker('setDate', from);
}
}
}
});
$("#to").datepicker({
maxDate: 0,
showButtonPanel : true,
closeText : 'Reset',
onClose: function () {
var today = new Date();
var from = $('#from').datepicker('getDate');
var from3 = from;
from3.setMonth(from3.getMonth() + 3);//3 month limit
var to = $('#to').datepicker('getDate');
if(from == ""){
$('#from').datepicker('option', 'maxDate', today);
}
else{
if ($(window.event.srcElement).hasClass('ui-datepicker-close')) {
$.datepicker._clearDate(this);
$("#to").datepicker("option", "maxDate", today);
}
$("#to").datepicker("option", "maxDate", today);
if(from3 > to){
$('#from').datepicker('setDate', from3);
}
else if(from > to){
$('#to').datepicker('setDate', from3);
}
}
}
});
});
答案 0 :(得分:1)
使用评论中提供的小提琴,这是我的版本:
$(function () {
$("#from").datepicker({
maxDate: 0,
showButtonPanel: true,
closeText: 'Reset',
onClose: function (e) {
var from = $('#from').datepicker('getDate');
var to = $('#to').datepicker('getDate');
if(from != null) {
// Limit the value of "TO" date to current "FROM" date
$("#to").datepicker("option", "minDate", from);
// Set "TO" date to "FROM" + 3 months if it is currently less than FROM
if(to != null && to < from) {
$('#to').datepicker('setDate', new Date(from.getFullYear(), from.getMonth() + 3, from.getDate()));
}
}
}
});
$("#to").datepicker({
maxDate: 0,
showButtonPanel: true,
closeText: 'Reset',
onClose: function (e) {
var from = $('#from').datepicker('getDate');
var to = $('#to').datepicker('getDate');
if(to != null) {
// Limit the value of "FROM" date to current "TO" date
$("#from").datepicker("option", "maxDate", to);
// Set "FROM" date to "TO" - 3 months if it is currently more than TO
if(from != null && from > to) {
$('#from').datepicker('setDate', new Date(to.getFullYear(), to.getMonth() - 3, to.getDate()));
}
}
}
});
});
在这里,您可以找到一个有效的演示:http://jsfiddle.net/ddg664rn/13/
在此版本中,如果不满足条件,则日期将在+ / - 3个月更改(即,如果您将FORM日期设置为大于TO日期,或TO日期小于FORM日期)。 我添加了minDate / maxDate,它也限制了错误输入:选择FROM日期后,TO日期不能小于此值。