Javascript 为什么datepicker beforeShowDay的表现不如预期

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

我创建的日期选择器有问题。我在同一页上使用了一个非常相似的日期选择器,没有任何问题。日期选择器显示时没有可选择的日期,即使在调试“limitToOneYear”函数时,它在几天内返回true。我是否遗漏了一些简单而明显的东西

    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,它返回的是整数表示,而不是日期对象,这是我所缺少的。谢谢是的,是的,我应该,我不知道我怎么错过了,谢谢!