Javascript 为什么datepicker beforeShowDay的表现不如预期
我创建的日期选择器有问题。我在同一页上使用了一个非常相似的日期选择器,没有任何问题。日期选择器显示时没有可选择的日期,即使在调试“limitToOneYear”函数时,它在几天内返回true。我是否遗漏了一些简单而明显的东西Javascript 为什么datepicker beforeShowDay的表现不如预期,javascript,jquery,jquery-ui-datepicker,Javascript,Jquery,Jquery Ui Datepicker,我创建的日期选择器有问题。我在同一页上使用了一个非常相似的日期选择器,没有任何问题。日期选择器显示时没有可选择的日期,即使在调试“limitToOneYear”函数时,它在几天内返回true。我是否遗漏了一些简单而明显的东西 function limitToOneYear(date) { var thisdate = Date.parse(date); var now = new Date(); var today = Date.parse
function limitToOneYear(date) {
var thisdate = Date.parse(date);
var now = new Date();
var today = Date.parse(new Date(now.getFullYear(),now.getMonth(),now.getDate()));
var maxDate = Date.parse(new Date((now.getFullYear() + 1), now.getMonth(), now.getDate()));
return (thisdate >= today && thisdate < maxDate);
}
$(".expirationDate").datepicker({
showOn: 'both',
buttonImage: '/images/datepicker/button.gif',
buttonImageOnly: true,
beforeShowDay: limitToOneYear
});
功能限制到一年(日期){
var thisdate=Date.parse(日期);
var now=新日期();
var today=Date.parse(新日期(now.getFullYear()、now.getMonth()、now.getDate());
var maxDate=Date.parse(新日期((now.getFullYear()+1)、now.getMonth()、now.getDate());
返回(thisdate>=今天&thisdate
我找到了一个解决方案,所以我在发布它,我仍然想了解我以前的解决方案不起作用的原因,所以如果它出现,我会选择一个不同的答案,但我最终利用了datepicker的minDate maxDate属性:
var now = new Date();
var endDate = now;
endDate = new Date((now.getFullYear() + 1), now.getMonth(), now.getDate());
$(".expirationDate").datepicker({
showOn: 'both',
buttonImage: '/images/datepicker/button.gif',
buttonImageOnly: true,
minDate : now,
maxDate: endDate
});
您是否应该根据的DatePicker API从limitToOneYear函数返回数组 所以你的limitToOneYear函数应该是这样的
function limitToOneYear(date) {
var thisdate = Date.parse(date);
var now = new Date();
var today = Date.parse(new Date(now.getFullYear(),now.getMonth(),now.getDate()));
var maxDate = Date.parse(new Date((now.getFullYear() + 1), now.getMonth(), now.getDate()));
return [(thisdate >= today && thisdate < maxDate), ''];
}
功能限制到一年(日期){
var thisdate=Date.parse(日期);
var now=新日期();
var today=Date.parse(新日期(now.getFullYear()、now.getMonth()、now.getDate());
var maxDate=Date.parse(新日期((now.getFullYear()+1)、now.getMonth()、now.getDate());
返回[(thisdate>=today&&thisdate
为什么创建一个Date
实例只是为了传递到Date.parse()
来创建一个新的Date
实例?除非我遗漏了一些重要的东西,否则我觉得这是不必要的和复杂的。new date get是当前日期除非你把东西传递给它,否则date parse会得到一个代表性的整数。所以它所做的就是得到一个代表今天日期(午夜)的整数。可能有一种比较日期的更简单的方法,但我目前不知道itAha,它返回的是整数表示,而不是日期对象,这是我所缺少的。谢谢是的,是的,我应该,我不知道我怎么错过了,谢谢!