문제

검증 할 사용자 정의 날짜 포맷을 어떻게 지정할 수 있습니까? 유효성 검사 플러그인 jQuery를 위해?

도움이 되었습니까?

해결책

당신은 addMethod 기능. "dd/mm/yyyy"를 검증하고 싶다고 가정 해 봅시다.

$.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
            }
        }
    })
;

다른 팁

Nickf의 답변은 좋지만 유효성 검사 플러그인에는 이미 추가 Methods.js 파일에 다른 여러 날짜 형식에 대한 유효성 검사기가 포함되어 있습니다. 자신의 글을 쓰기 전에 누군가가 아직하지 않았는지 확인하십시오.

나는 개인적으로 아주 좋은 것을 사용합니다 http://www.datejs.com/ 도서관.

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

다음을 사용하여 호주 형식을 얻을 수 있으며 2011 년 29/02/2011이 아닌 Leap Day 29/02/2012를 검증 할 수 있습니다.

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");

다음은 다음을 포함하여 거의 모든 날짜 형식을 검증하는 새로운 검증 방법의 예입니다.

  • DD/MM/YY 또는 DD/MM/YYYY
  • dd.mm.yy 또는 dd.mm.yyy
  • DD, MM, YY 또는 DD, MM, YYYY
  • DD MM YY 또는 DD MM YYYY
  • DD-MM-YY 또는 DD-MM-YYYY

그런 다음 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
        }
    }
})

;

최근에 저에게 효과가있는 특정 코드 샘플은 다음과 같습니다.

// 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 } );

이것은 내가 원하는 결과를 얻기 위해 이전 게시물을 결합/수정하는 것입니다.

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

유효성 검사 후 날짜 유효성 검사를 추가하십시오. 즉 $ (form) .validate ({...}) 메소드를 호출 한 후.

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

마지막으로 영국 날짜 형식으로 수정 된 주요 ISDate JavaScript 함수

//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;
}

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

  <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
      }
    }
  });

});             

$.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 또한 yyyy/mm/dd

그러나 2 월 언젠가 28 일 또는 29 일만에 달의 크기를 판단 할 수는 없습니다.

@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 및 01/13/2017을 검증하지 않습니다.

또한 50 12 2017 및 50/12/2017을 검증하지 않습니다.

쉽다. 예 : 예 : 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();
        }
    });

});
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top