如何使用jquery设置datepicker?

时间:2012-06-09 14:52:29

标签: jquery jquery-ui

我正在尝试使用jquery在开始日期和结束日期控件上创建日期功能。我想选择开始日期,当到达开始日期之前的结束日期时,上一个日期将作为禁用我的代码在下面。

$( "#" + TxtStrtDate,"#" + TxtExpDte" ).datepicker({
    defaultDate: "+1w",
    changeMonth: true,
    numberOfMonths: 3,
    onSelect: function( selectedDate ) {
        var option = this.id == "abc" ? "minDate" : "maxDate",

        instance = $( this ).data( "datepicker" ),
        date = $.datepicker.parseDate(
            instance.settings.dateFormat ||
        $.datepicker._defaults.dateFormat,
        selectedDate, instance.settings );

        dates.not( this ).datepicker( "option", option, date );
    }
});

我的代码中有什么错误请建议。

2 个答案:

答案 0 :(得分:2)

假设TxtStrtDateTxtExpDte是变量,您引用元素的方式无效。

更新:

$("#"+TxtStrtDate+", #"+TxtExpDte).datepicker({
...
});
带有建议代码的

This Fiddle工作正常!

带有当前代码的

This Fiddle证明它不起作用!


如果它们实际上是元素ID,请使用:

$("#TxtStrtDate, #TxtExpDte").datepicker({
...
});

请参阅此working Fiddle示例!

答案 1 :(得分:2)

由于您提到这些是服务器控件,我假设您使用的是ASP.NET。如果是这种情况并且您正在使用MasterPages,则MasterPages会破坏控件的ID,因此您必须执行以下操作:

$('#<%= TxtStrtDate.ClientID %>, #<%= TxtExpDte.ClientID %>').datepicker({
...
});

否则,你的选择器中有一个额外的“你的id需要在引号内,除非它们实际上是javascript变量:

$( "#" + TxtStrtDate,"#" + TxtExpDte" )

应更改为:

$("#TxtStrtDate, #TxtExpDte")
// or if they are javascript variables
$("#" + TxtStrtDate + ", #" + TxtExpDte)

修改

根据您的评论,您似乎想要使用jquery datepicker的日期范围版本。为此,您必须执行以下操作:

$( "#TxtStrtDate" ).datepicker({
    defaultDate: "+1w",
    changeMonth: true,
    numberOfMonths: 3,
    onSelect: function( selectedDate ) {
        $( "#TxtExpDte" ).datepicker( "option", "minDate", selectedDate );
    }
});
$( "#TxtExpDte" ).datepicker({
    defaultDate: "+1w",
    changeMonth: true,
    numberOfMonths: 3,
    onSelect: function( selectedDate ) {
        $( "#TxtStrtDate" ).datepicker( "option", "maxDate", selectedDate );
    }
});

查看jquery ui网站上的date range demo以获取更多信息。