2010-04-26 4 views
6

나는 텍스트 상자와 그 옆에 datepicker가 있으며 asp.net을 사용하고 있으며 사용자는 datepicker에서 날짜를 선택할 수도 있습니다.Jquery datepicker : 날짜 확인 mm/dd/yyyy

날짜를 올바르게 입력하면 어떻게 확인할 수 있습니까?

<script type="text/javascript"> 
     $(document).ready(function() { 
      $('#<%=StartDate.ClientID%>').datepicker({ showOn: 'button', 
        buttonImage: '../images/Calendar.png', 
        buttonImageOnly: true, onSelect: function() { }, 
        onClose: function() { $(this).focus(); } 
      }); 
     }); 
    </script> 
+1

정확한 날짜의 정의는 무엇입니까? –

+1

예 : 30/30/2008은 유효한 날짜가 아닙니다. –

답변

4

ASP.NET을 사용하는 경우 ASP.NET 비교 검사기 [ASP.NET Date Validator]를 사용할 수 있습니다.

<asp:TextBox ID="tb" runat="server"></asp:TextBox> 

<asp:CompareValidator ID="cv" runat="server" 
ControlToValidate="tb" ErrorMessage="* Please enter a valid date!" Text="*" 
Operator="DataTypeCheck" Type="Date"></asp:CompareValidator> 

**** 업데이트 **

나는 위의 비교 검사기에 의해 실행 된 자바 스크립트를 가져다가 주위에 사용자 정의 jQuery를 검증 방법을 포장 : 당신이 때문에

<script type="text/javascript"> 
    $(document).ready(function() { 

     $.validator.addMethod("truedate", function (value, element, params) { 
      function GetFullYear(year, params) { 
       var twoDigitCutoffYear = params.cutoffyear % 100; 
       var cutoffYearCentury = params.cutoffyear - twoDigitCutoffYear; 
       return ((year > twoDigitCutoffYear) ? (cutoffYearCentury - 100 + year) : (cutoffYearCentury + year)); 
      } 

      var yearFirstExp = new RegExp("^\\s*((\\d{4})|(\\d{2}))([-/]|\\. ?)(\\d{1,2})\\4(\\d{1,2})\\.?\\s*$"); 
      try { 
       m = value.match(yearFirstExp); 
       var day, month, year; 
       if (m != null && (m[2].length == 4 || params.dateorder == "ymd")) { 
        day = m[6]; 
        month = m[5]; 
        year = (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10)); 
       } 
       else { 
        if (params.dateorder == "ymd") { 
         return null; 
        } 
        var yearLastExp = new RegExp("^\\s*(\\d{1,2})([-/]|\\. ?)(\\d{1,2})(?:\\s|\\2)((\\d{4})|(\\d{2}))(?:\\s\u0433\\.)?\\s*$"); 
        m = value.match(yearLastExp); 
        if (m == null) { 
         return null; 
        } 
        if (params.dateorder == "mdy") { 
         day = m[3]; 
         month = m[1]; 
        } 
        else { 
         day = m[1]; 
         month = m[3]; 
        } 
        year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10)); 
       } 
       month -= 1; 
       var date = new Date(year, month, day); 
       if (year < 100) { 
        date.setFullYear(year); 
       } 
       return (typeof (date) == "object" && year == date.getFullYear() && month == date.getMonth() && day == date.getDate()) ? date.valueOf() : null; 
      } 
      catch (err) { 
       return null; 
      } 
     }, "Please enter an actual date."); 

     $("#form1").validate(); 

     $("#one").rules('add', 
     { 
      truedate: { 
       cutoffyear: '2029', 
       dateorder: 'mdy' 
      } 
     }); 
    }); 

</script> 

<input id="one" /> 
+0

asp.net 컨트롤을 사용할 수있는 옵션이 있지만 jquery 유효성 검사를 사용하려고했습니다. –

+0

나는 유효성 검사기에 의해 생성 된 javascript를 가져 와서 그 주위에 사용자 정의 메서드를 래핑했습니다. – dochoffiday

+0

'원격'을 사용할 수도 있고 서버에서 유효한 날짜 인 경우에만 작동하는 날짜로 변환하려고 시도합니다 – dochoffiday

0

을 이미 jquery를 사용하고 있다면 유효성 검사에 큰 유연성이있는 http://bassistance.de/jquery-plugins/jquery-plugin-validation/을 확인할 수 있습니다.

+0

bashistance.de를 사용하여 양식 유효성 검사를하고 있지만 다른 예제는 없습니다. 날짜 확인이 발견되면 –

+1

날짜 유효성 검사가 있지만 문자열 형식 만 검사하므로 "30/30/2008"은 유효한 날짜가됩니다 – dochoffiday

+0

@Doc : 실제 방법이 없습니다. 날짜를 확인하려면? 또는 asp.net validatin 컨트롤을 사용하는 유일한 옵션으로 왼쪽? –

33

입력 유효성 확인을 위해이 핸들러를 사용합니다 :

onClose: function(dateText, inst) { 
     try { 
      $.datepicker.parseDate('dd/mm/yy', dateText); 
     } catch (e) { 
      alert(e); 
     }; 

희망, 내가 ISDATE라는 한 사용자 지정 유효성 검사기에 날짜 선택기 컨트롤의 parseDate 유틸리티 방법을 사용하여, 나는 카트린 & 문서 휴일의 접근 방식의 혼합을 사용하고 누군가

+1

그런 작은 팡파르와 같은 완벽한 답변! –

4

에 유용 할 수 있습니다.

parseDate의 형식 인수를 적절한 값 (참조 : http://docs.jquery.com/UI/Datepicker/parseDate)으로 변경하십시오.

$(document).ready(function() 
    { 
     $.validator.addMethod('isDate', function(value, element) 
     { 
      var isDate = false; 
      try 
      { 
       $.datepicker.parseDate('dd/mm/yy', value); 
       isDate = true; 
      } 
      catch (e) 
      { 

      } 
      return isDate; 
     }); 

     $("#form1").validate(); 

     $("#dateToValidate").rules("add", { isDate: true, messages: {isDate: "Date to Validate is invalid."} }); 
    }); 

그것은 아마도 발리는 UI 제어하지만 지옥을 참조 할 할하지 않는 것이 가장 좋습니다. :)