动态设置DatePicker maxDate&的minDate

时间:2013-02-26 09:28:00

标签: jquery datepicker hiddenfield maxdate mindate

我有一个带文本框和jquery datepicker的ascx用户控件。用户控件定义了两个属性_futuredate和_pastdate,它们是使用控件在页面的aspx中设置的。

我想使用这些布尔属性来设置datepicker的mindate和maxdate但是我正在苦苦挣扎并且作为最后的手段来到这里作为最后的手段在花了两天时间失败后,我自己使用我对jQuery的有限知识进行排序。 / p>

我想要做的是根据page_init例程中的属性将hiddenfield vlaues设置为日期,然后根据这些hiddenfield值设置mindate和maxdate。问题是我不认为jQuery函数正在提取值(我知道这是因为我在我的函数中添加了一个警告来显示日期)。

有人可以在这帮助我吗?

 <%@ Control Language="VB" AutoEventWireup="false" 
    Inherits="HarvestWebSite.HarvestDateUserControl" Explicit="true" Strict="true" 
    Codebehind="HarvestDateUserControl.ascx.vb" %>
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %>

<script type="text/javascript" language="javascript">
            $(function() {

                  try  {
                        document.execCommand("BackgroundImageCache", false, true); 
                       } 
                       catch(exception) 
                       {     
                        // other browsers do nothing 
                       }

                  var prm = Sys.WebForms.PageRequestManager.getInstance();
                  prm.add_pageLoaded(AttachDatePickers);
                  });

            function AttachDatePickers() {
                $( '.datepicker' ).datepicker({
                    beforeShow: customDate,
                    showOn: 'both', 
                    buttonImage: clientSideDatePickerImage,
                    buttonImageOnly: true,
                    onSelect: function (dateText, inst) {    $('#HiddenField1').val(dateText) },
                    dateFormat:  'dd-M-yy'
                 });


             }

            function customDate() {

            var defaultMin = new Date();
            var defaultMax = new Date();

            var Min = defaultMin;
            var Max = defaultMax;

// make valid date from hiddenfied value format is MM/dd/yyyy
            dateMin = $("#HiddenField2").val();
            dateMin = new Date(dateMin);

            dateMax = $("#HiddenField1").val();
            dateMax = new Date(dateMax);


            if (dateMin && dateMax) {
                Min = new Date(dateMin.getFullYear(), dateMin.getMonth(), dateMin.getDate());
                Max = new Date(dateMax.getFullYear(), dateMax.getMonth(), dateMax.getDate());
            }

            alert(Max);

            return {
                minDate: Min,
                maxDate: Max

                };
            }

    </script>


<asp:TextBox ID="tbDateBox" runat="server" Width="80px" Enabled="false" CssClass="datepicker"></asp:TextBox>


<noscript>
<asp:ImageButton ID="ibDateBox" runat="server" ImageUrl="~/images/datebox.png" 
CssClass="dateboxbutton" Width="16px" Height="16px" />
</noscript>

<asp:HiddenField ID="HiddenField1" runat="server" />
<asp:HiddenField ID="HiddenField2" runat="server" />

代码背后:

Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init

    If _futuredate = True Then
        HiddenField1.Value = DateAdd(DateInterval.WeekOfYear, -2, Today)
    Else
        HiddenField1.Value = "01/01/2200"
    End If

    If _pastdate = True Then
        HiddenField2.Value = Today
    Else
        HiddenField2.Value = "01/01/1900"
    End If

End Sub

0 个答案:

没有答案