jQuery:在为datePicker指定minDate和maxDate时遇到问题

时间:2010-09-01 13:52:41

标签: jquery jquery-ui-datepicker

我正在尝试强制选择(今天减去一周,今天加一周)之间的日期,而是获取一个日期选择器,其中过去日期已禁用且未来日期不受限制。

有什么想法吗? (我是jQuery的新手,玩它的第二天......)谢谢!

我隔离了代码以清楚地重复它:

<html>                                                                  
<head>                                                                  
    <title>jquery sample</title>
    <script type="text/javascript" src="jquery-1.4.1.min.js"></script>
    <script type="text/javascript" src="date.js"></script>
    <script type="text/javascript" src="jquery.datePicker.js"></script>
    <link href="datePicker.css" rel="stylesheet" type="text/css" />
    <link href="custom.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" charset="utf-8">
        $(function () {
            $('.date-pick').datePicker({ minDate: '-7D', maxDate: '+7D' }).val(new Date().asString()).trigger('change');
        });
    </script>
</head>
<body>                                                                  
    <a href="">Link</a>
    <input name="date1" id="date1" class="date-pick" />
</body>                                                                 

3 个答案:

答案 0 :(得分:2)

@Nick指出,看起来你正在混淆我所做的两个瞄准器。您正在使用的datepicker插件不会选择minDatemaxDatehttp://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/documentation.html

但是jQuery UI datepicker可以。 http://jqueryui.com/demos/datepicker/#option-minDate

您的意思是使用哪一个?如果它是插件(不是jQuery UI),那么使用startDateendDate选项(看起来他们只接受绝对日期字符串[有点蹩脚,IMO]):

$(function() {
    var MS_PER_WEEK = 604800000;
        now = new Date().getTime(),
        start = new Date(now - MS_PER_WEEK),
        end = new Date(now + MS_PER_WEEK),
        startStr = start.getDate() + '/' + (start.getMonth() + 1) + '/' + start.getFullYear(),
        endStr = end.getDate() + '/' + (end.getMonth() + 1) + '/' + end.getFullYear()

    $('.date-pick').datePicker({
        startDate: startStr
        endDate: endStr
    }).val(new Date().asString()).trigger('change');
});

对于jQuery UI datepicker,请尝试使用小写d来表示天数:

$(function() {
    $('.date-pick').datepicker({
        minDate: '-7d',
        maxDate: '+7d'
    }).val(new Date().asString()).trigger('change');
});

<击>

答案 1 :(得分:2)

您当前的插件startDate and endDate的选项不同,它们必须是字符串,如下所示:

$(function () {
  $('.date-pick').datePicker({ 
     startDate : new Date().addDays(-7).asString(), 
     endDate: new Date().addDays(7).asString()
  }).val(new Date().asString()).trigger('change');
});​

You can give it a try here。您似乎从中获取的文档是针对不同的插件,即jQuery UI Datepicker found here

答案 2 :(得分:0)

我认为您需要使用startDate和endDate:

$('.date-pick').datePicker({ startDate: '-2D', endDate: '+2D' }).val(new Date().asString()).trigger('change');

也就是说,假设您使用的是此处所述的插件:kevinluck.com。这在我的本地测试中对我有用。由于与Kevin网站上的示例相似,我假设您正在使用此插件。