2012-02-21 4 views
1

사용자가 Calendar Extender 컨트롤에서 날짜를 선택할 수있는 ASP.Net 양식이 있는데, 날짜 필드 (FromDate & ToDate)가 2 개 있습니다.Javascript & ASP.Net을 사용하는 유효 일자

나는 다음과 같은 사용하여 자바 스크립트를 확인하려면 :

  • FROMDATE는
  • FROMDATE & TODATE 오늘 날짜 이상이어야한다 TODATE
  • 항상보다 작아야합니다. 두 조건에 해당하는 경우

, 나는 주말을 제외한 선택한 기간 내에 일의 총 수를 계산하고 (이 방법은 잘 작동) 사용자에게 표시됩니다 코드 숨김에서 메소드를 호출하는 다음 싶습니다 .

아래 코드에서 앞서 언급 한 두 조건이 충족 될 때 __doPostBack을 사용하여 codebehind 메서드를 실행했습니다. 그것은 codebehind 메서드를 발생시키지 만 자바 스크립트 변수는 틀리게됩니다 (compareDate 변수는 각 함수 호출 & postback 함수 호출마다 항상 증가하므로) 모든 결과가 올바르지 않게됩니다. 다음은

*

내가 자바 스크립트를 사용하여 날짜를 확인하는 데 사용하는 현재의 방법이다

<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이 제어 *, 그것은 모두 텍스트 상자의 일정 연장 컨트롤에서 OnClientDateSelectionChanged 이벤트에서 발사 된 것 :

<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" /> 

이걸 chieve.

고맙습니다.

답변

0

이런 종류의 것을 찾고 계셨습니까? 여기에 Fiddle을 추가했습니다. jquery ui date picker를 사용했지만 값이 'yyyy/mm/dd'또는 'mm/dd/yyyy'인 경우 임의의 datepicker를 사용할 수 있습니다.

+0

많은 도움을 주셔서 감사합니다. :) –

관련 문제