2012-02-21 59 views
1

我有一個ASP.Net窗體,用戶可以從Calendar Extender控件中選擇日期,我有2個日期字段(FromDate & ToDate)。Validation Dates using Javascript&ASP.Net

我想驗證使用javascript如下:

  • 沒有fromdate應始終大於TODATE
  • 沒有fromdate & TODATE應不小於今天的日期。

如果兩個條件都爲真,我想然後調用從代碼隱藏的方法,其將計算的總天數所選擇的期間內不包括週末和將其顯示給用戶(該方法正常工作) 。

在下面的代碼中,我試着用__doPostBack在前面提到的兩個條件滿足時觸發codebehind方法。它觸發代碼隱藏方法,但隨後javascript變量變得不正確(compareDate變量總是在每個函數調用&回發時遞增),因此所有結果都不正確。

* 下面是當前的方法我用它來驗證使用Javascript的日期,它是從OnClientDateSelectionChanged觸發的事件從兩個文本框的日曆擴展控制*

<script type="text/javascript"> 

     var fromDate = new Date(); 
     var toDate = new Date(); 

     function checkDate(sender, args) { 

      if (sender.get_id() == 'CalendarExtenderFrom') { 
       fromDate = sender._selectedDate; 
      } 
      else if (sender.get_id() == 'CalendarExtenderTo') { 
       toDate = sender._selectedDate; 
      } 

      // Check if selected date is less than today's date 
      var todayDate = new Date(); 
      var year = todayDate.getFullYear(); 
      var month = todayDate.getMonth(); 
      var day = todayDate.getDate(); 
      var dateOnly = new Date(year, month, day); 

      if (sender._selectedDate < dateOnly) { 
       alert("You cannot select a day earlier than today!"); 
       sender._textbox.set_Value(""); 
       return; 
      } 

      // Check if FromDate > ToDate 
      if (document.getElementById('TextBoxDateOfLeave').value != "" && document.getElementById('TextBoxDateOfReturn').value != "") { 

       var compareDate = new Date(fromDate.getFullYear(), fromDate.getMonth(), (fromDate.getDate()) + 1, 00, 00, 00, 00); 

       if (toDate < compareDate) { 

        alert("(Return Date) should be greater than (Travel Date)"); 
        sender._textbox.set_Value(""); 
        return; 
       } 

      } 

      // If both conditions are met 
      window.__doPostBack('__Page', ''); 
     } 

    </script> 

ASP.Net控制:

<asp:TextBox ID="TextBoxDateOfLeave" runat="server" ClientIDMode="Static" ontextchanged="CalculateLeaveDays"></asp:TextBox> 
<asp:CalendarExtender ID="CalendarExtenderFrom" runat="server" Enabled="True" Format="dd/MMM/yyyy" TargetControlID="TextBoxDateOfLeave" OnClientDateSelectionChanged="checkDate" /> 

<asp:TextBox ID="TextBoxDateOfReturn" runat="server" ClientIDMode="Static" ontextchanged="CalculateLeaveDays"></asp:TextBox> 
<asp:CalendarExtender ID="CalendarExtenderTo" runat="server" Enabled="True" Format="dd/MMM/yyyy" TargetControlID="TextBoxDateOfReturn" OnClientDateSelectionChanged="checkDate" /> 

請讓我知道是否有辦法請點擊此處。

謝謝,

回答

0

你是在找這樣的事嗎?我在這裏添加了一個Fiddle。我使用了jquery ui日期選擇器,但是您可以使用您選擇的任何日期選擇器,只要值爲'yyyy/mm/dd'或'mm/dd/yyyy'我認爲

+0

謝謝這幫了我很多:) – 2012-02-21 18:04:15