【问题标题】:How to restrict jQuery UI Datepicker to disallow dates in the future?如何限制 jQuery UI Datepicker 在未来禁止日期?
【发布时间】:2011-08-03 12:56:34
【问题描述】:

我使用的是 jQuery UI 日期选择器,因此只能选择星期日。

我希望发生的情况是,不能选择从当前日期到未来的日期。这是我目前使用的代码:

var daysToDisable = [1,2,3,4,5,6];

        $('#startdate').datepicker({
            beforeShowDay: disableSpecificWeekDays
        });

        function disableSpecificWeekDays(date) {
            var day = date.getDay();
            for (i = 0; i < daysToDisable.length; i++) {
                if ($.inArray(day, daysToDisable) != -1) {
                    return [false];
                }
            }
            return [true];
        }

【问题讨论】:

    标签: jquery jquery-ui datepicker


    【解决方案1】:

    我只会使用单个条目将日期限制为今天之后的任何内容:

    $('#startdate').datepicker({
        maxDate: '+0d'
    });
    

    【讨论】:

    • 这似乎是最好的答案,因为它很简单。
    • 太棒了。方式更简单,但仍然非常有效。
    • 确实如此。再简单不过了。
    【解决方案2】:

    您可以使用 ma​​xDate 属性来阻止选择未来的日期。

    注意:这假设您的 dateFormatdd/mm/yy

    编辑: http://jsfiddle.net/jXGZz/

    var fullDate = new Date();
    
    var twoDigitMonth = ((fullDate.getMonth().length+1) === 1)? (fullDate.getMonth()+1) : '0' + (fullDate.getMonth()+1);
    
    $('#startdate').datepicker({
        maxDate: fullDate.getDate() + "/" + twoDigitMonth + "/" + fullDate.getFullYear(),
        beforeShowDay: disableSpecificWeekDays
    });
    
    
    function disableSpecificWeekDays(date) {
        if(date.getDay()==0){
            return [true];
        }else{
            return [false];
        }
    }
    

    修改了twoDigitMonth

    var twoDigitMonth = fullDate.getMonth()+1<10 ? "0"+fullDate.getMonth()+1 : fullDate.getMonth()+1 ;
    

    【讨论】:

    • 是的,但这会每天都在变化吗?我确实需要有人在这一天可用时选择一天,只是因为下个星期天还没到,所以无法选择?
    • 是的。我不太明白你的意思,但这使用当前日期(例如,每次打开脚本时碰巧是什么日期)。
    • Calum,感谢您抽出宝贵时间提供帮助。我有人将我正在使用的代码放在一起,但我不太了解如何实现您在代码中添加的内容。报告时我使用 mm/dd/yyyy。
    • 这段代码应该为你做这一切:jsfiddle.net/jXGZz希望有帮助! :)
    • Calum,这正是我需要的,但它从三月开始,不允许我前进到八月?
    【解决方案3】:

    请像这样调用日期选择器

    jQuery(document).ready(function() {
        $('#startdate').datepicker({
          beforeShowDay: disableSpecificWeekDays
        });
    });
    

    【讨论】:

    • 我不明白这个?我把它包裹在 jQuery 就绪函数中。我只是发送了 datepicker 的代码,而无需表明它已经包含在 ready 函数中。
    猜你喜欢
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多