2012-02-21 9 views
1

ユーザーはCalendar Extenderコントロールから日付を選択できるASP.Netフォームがあります。日付(FromDate & ToDate)の2つのフィールドがあります。JavascriptとASP.Netを使用した検証日

私はJavaScriptを使用して次のことを検証する:

  • FROMDATEはいつもより少ない
  • のToDateよりFROMDATE &のToDateは、今日の日付を下回ってはいけませんする必要があります。両方の条件に該当する場合、私は、週末を除く選択した期間内の日の合計数を計算し、それをユーザーに表示する分離コードからメソッドを呼び出すしたいと思います

(このメソッドが正常に動作します) 。

以下のコードでは、__doPostBackを使用して、前述の2つの条件が満たされたときにcodebehindメソッドを起動しました。 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 date pickerを使用しましたが、値が 'yyyy/mm/dd'または 'mm/dd/yyyy'であれば、任意の日付ピッカーを使用できます。

+0

:) –

関連する問題