복붙노트

[JQUERY] jQuery를 검증 플러그인을 사용자 정의 날짜 형식

JQUERY

jQuery를 검증 플러그인을 사용자 정의 날짜 형식

해결법


  1. 1.당신은 addMethod 기능을 사용하여 자신 만의 검증 방법을 만들 수 있습니다. 당신이 "일 / 월 / 년"을 확인하고 싶었다 말 :

    당신은 addMethod 기능을 사용하여 자신 만의 검증 방법을 만들 수 있습니다. 당신이 "일 / 월 / 년"을 확인하고 싶었다 말 :

    $.validator.addMethod(
        "australianDate",
        function(value, element) {
            // put your own logic here, this is just a (crappy) example
            return value.match(/^\d\d?\/\d\d?\/\d\d\d\d$/);
        },
        "Please enter a date in the format dd/mm/yyyy."
    );
    

    그리고 양식에 추가 :

    $('#myForm')
        .validate({
            rules : {
                myDate : {
                    australianDate : true
                }
            }
        })
    ;
    

  2. 2.nickf의 대답은 검증 플러그인이 이미 추가-methods.js 파일에 여러 가지 다른 날짜 형식에 대한 검증을 포함 좋은,하지만 노트입니다. 당신이 당신의 자신을 쓰기 전에, 누군가가 이미 수행되지 않았 음을 확인하십시오.

    nickf의 대답은 검증 플러그인이 이미 추가-methods.js 파일에 여러 가지 다른 날짜 형식에 대한 검증을 포함 좋은,하지만 노트입니다. 당신이 당신의 자신을 쓰기 전에, 누군가가 이미 수행되지 않았 음을 확인하십시오.


  3. 3.개인적으로 아주 좋은 http://www.datejs.com/ 라이브러리를 사용합니다.

    개인적으로 아주 좋은 http://www.datejs.com/ 라이브러리를 사용합니다.

    Docco 여기 : http://code.google.com/p/datejs/wiki/APIDocumentation

    당신은 당신의 호주 포맷을 취득하려면 다음을 사용할 수 있으며, 윤일 29/02/2012하지 29/02/2011 유효성을 검사합니다 :

    jQuery.validator.addMethod("australianDate", function(value, element) { 
        return Date.parseExact(value, "d/M/yyyy");
    });
    
    $("#myForm").validate({
       rules : {
          birth_date : { australianDate : true }
       }
    });
    

    또한 데이터 http://digitalbush.com/projects/masked-input-plugin/을 표준화하기 위해 마스크 입력 플러그인을 사용

    $("#birth_date").mask("99/99/9999");
    

  4. 4.다음을 포함하여 거의 모든 날짜 형식을 확인하는 새로운 검증 방법에 대한 예입니다 :

    다음을 포함하여 거의 모든 날짜 형식을 확인하는 새로운 검증 방법에 대한 예입니다 :

    당신이 PHP로 값을 통과 할 때 그런 다음 한 strtotime으로 변환 할 수 있습니다

    여기에 방법을 추가하는 방법입니다 :

        $.validator.addMethod("anyDate",
        function(value, element) {
            return value.match(/^(0?[1-9]|[12][0-9]|3[0-1])[/., -](0?[1-9]|1[0-2])[/., -](19|20)?\d{2}$/);
        },
        "Please enter a date in the format!"
    );
    

    그런 다음 새로운 필터로 추가

    $('#myForm')
    .validate({
        rules : {
            field: {
                anyDate: true
            }
        }
    })
    

    ;


  5. 5.여기에 최근에 나를 위해 일한 특정 코드 예제입니다 :

    여기에 최근에 나를 위해 일한 특정 코드 예제입니다 :

    // Replace the builtin US date validation with UK date validation
    $.validator.addMethod(
        "date",
        function ( value, element ) {
            var bits = value.match( /([0-9]+)/gi ), str;
            if ( ! bits )
                return this.optional(element) || false;
            str = bits[ 1 ] + '/' + bits[ 0 ] + '/' + bits[ 2 ];
            return this.optional(element) || !/Invalid|NaN/.test(new Date( str ));
        },
        "Please enter a date in the format dd/mm/yyyy"
    );
    

    나는 이것이 현재의 플러그인에 문제를 야기한다고 볼 수 있지만 나는이 실제로 내장 된 날짜 유효성 검사 루틴을 대체 있음을 알아 두셔야합니다.

    그때 사용하여 양식이 적용 :

    $( '#my_form input.date' ).rules( 'add', { date: true } );
    

  6. 6.이 날 / 결합 내 원하는 결과를 달성하기 위해 이전의 게시물을 수정하는 것입니다 :

    이 날 / 결합 내 원하는 결과를 달성하기 위해 이전의 게시물을 수정하는 것입니다 :

            // Override built-in date validator
            $.validator.addMethod(
                "date",
                function (value, element) {
                    //Return            NB: isRequired is not checked at this stage
                    return (value=="")? true : isDate(value);
                },
                "* invalid"
            );
    

    유효성 검사 설정 후 날짜 유효성 검사를 추가합니다. 즉 ({...}) 메소드 $ (양식) .validate를 호출 한 후.

            //Add date validation (if applicable)
            $('.date', $(frmPanelBtnId)).each(function () {
                $(this).rules('add', {
                    date: true
                });
            });
    

    마지막으로, 주요 ISDATE 자바 스크립트 기능이 영국의 날짜 형식에 대한 수정

    //Validates a date input -- http://jquerybyexample.blogspot.com/2011/12/validate-date-    using-jquery.html
    function isDate(txtDate) {
        var currVal = txtDate;
        if (currVal == '')
           return false;
    
      //Declare Regex  
      var rxDatePattern = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
      var dtArray = currVal.match(rxDatePattern); // is format OK?
    
      if (dtArray == null)
          return false;
    
       //Checks for dd/mm/yyyy format.
       var dtDay = dtArray[1];
       var dtMonth = dtArray[3];
       var dtYear = dtArray[5];
    
      if (dtMonth < 1 || dtMonth > 12)
          return false;
      else if (dtDay < 1 || dtDay > 31)
          return false;
      else if ((dtMonth == 4 || dtMonth == 6 || dtMonth == 9 || dtMonth == 11) && dtDay == 31)
          return false;
      else if (dtMonth == 2) {
          var isleap = (dtYear % 4 == 0 && (dtYear % 100 != 0 || dtYear % 400 == 0));
          if (dtDay > 29 || (dtDay == 29 && !isleap))
              return false;
      }
    
      return true;
    }
    

  7. 7.존, 당신은 몇 가지 구문 오류는 아래를 참조하십시오, 이것은 나를 위해 일한 있습니다.

    존, 당신은 몇 가지 구문 오류는 아래를 참조하십시오, 이것은 나를 위해 일한 있습니다.

      <script type="text/javascript">
    $(document).ready(function () {
    
      $.validator.addMethod(
          "australianDate",
          function (value, element) {
            // put your own logic here, this is just a (crappy) example 
            return value.match(/^\d\d?\/\d\d?\/\d\d\d\d$/);
          },
          "Please enter a date in the format dd/mm/yyyy"
        );
    
      $('#testForm').validate({
        rules: {
          "myDate": {
            australianDate: true
          }
        }
      });
    
    });             
    


  8. 8.

    $.validator.addMethod("mydate", function (value, element) {
    
            return this.optional(element) || /^(\d{4})(-|\/)(([0-1]{1})([1-2]{1})|([0]{1})([0-9]{1}))(-|\/)(([0-2]{1})([1-9]{1})|([3]{1})([0-1]{1}))/.test(value);
    
        });
    

    당신은 할 수 YYYY-MM-DD 또한, 년 / 월 / 일 등의 입력

    하지만 달 언젠가 2월 단지 28 이십구일의 크기를 판단 할 수 있습니다.


  9. 9.체크 아웃 : jQuery를 가면 입력 플러그인

    체크 아웃 : jQuery를 가면 입력 플러그인


  10. 10.@blasteralfred :

    @blasteralfred :

    내가 나를 위해 정확한 날짜를 확인하는 규칙을 다음있어 (DD MM YYYY)

    jQuery.validator.addMethod(
    "validDate",
    function(value, element) {
        return value.match(/(?:0[1-9]|[12][0-9]|3[01]) (?:0[1-9]|1[0-2]) (?:19|20\d{2})/);
    },
    "Please enter a valid date in the format DD MM YYYY"
    

    );

    DD / MM / YYYY를 들어

    jQuery.validator.addMethod(
    "validDate",
    function(value, element) {
        return value.match(/(?:0[1-9]|[12][0-9]|3[01])\/(?:0[1-9]|1[0-2])\/(?:19|20\d{2})/);
    },
    "Please enter a valid date in the format DD/MM/YYYY"
    

    );

    이 01 13 2017 2017년 1월 13일의 유효성을 검사하지 않습니다.

    또한 50 12 2017 50/12/2017을 확인하지 않습니다.


  11. 11.쉬운 예는 다음과 같습니다 HTML5 자동 유형 = "날짜"에 대한 유효합니다.

    쉬운 예는 다음과 같습니다 HTML5 자동 유형 = "날짜"에 대한 유효합니다.

    <script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/jquery.validate.min.js"></script>
    <script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/additional-methods.min.js"></script>
    <script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/localization/messages_es.js"></script>
    
    $(function () {
    
            // Overload method default "date" jquery.validate.min.js
            $.validator.addMethod(
                "date",
                function(value, element) {
                    var dateReg = /^\d{2}([./-])\d{2}\1\d{4}$/;
                    return value.match(dateReg);
                },
                "Invalid date"
            );
    
         // Form Demo jquery.validate.min.js
         $('#form-datos').validate({
            submitHandler: function(form) {
                form.submit();
            }
        });
    
    });
    
  12. from https://stackoverflow.com/questions/511439/custom-date-format-with-jquery-validation-plugin by cc-by-sa and MIT license