0

이 자습서 here을 따라 왔으며 서로 비교 한 날짜 유효성 검사 방법을 보여줍니다. 내가 주석을 달았습니다 코드의 첫 번째 블록에서 오류가 있어요 그리고 그것은 "정의되지 않은 또는 null 참조"이 코드 라인에서 유래의 속성 '요소'를 얻을 수 없다는 것을 말한다 customValidation.formValidator = $ (event.data .source) .closest ('form'). data ('validator') 누구든지이 문제를 해결할 수 있는지 알 수 없으므로 오류가 발생하지 않습니다. 나는 최근 눈에 거슬리지 유효성 검사를 사용하고눈에 거슬리는 날짜 비교 유효성 검사기

window.customValidation = window.customValidation || 
{ 
    relatedControlValidationCalled: function (event) { 
     if (!customValidation.activeValidator) { 
      customValidation.formValidator = $(event.data.source).closest('form').data('validator'); 
     } 

     // code error below 
     customValidation.formValidator.element($(event.data.target)); 
    }, 
    relatedControlCollection: [], 
    formValidator: undefined, 
    addDependatControlValidaitonHandler: function (element, dependentPropertyName) { 
     var id = $(element).attr('id'); 
     if ($.inArray(id, customValidation.relatedControlCollection) < 0) { 
      customValidation.relatedControlCollection.push(id); 
      $(element).on(
       'blur', 
       { source: $(element), target: $('#' + dependentPropertyName) }, 
       customValidation.relatedControlValidationCalled); 
     } 
    } 
}; 

어댑터 :

$.validator.unobtrusive.adapters.add('comparedates', ['otherpropertyname', 'allowequality'], 
    function (options) { 
     options.rules['comparedates'] = options.params; 
     if (options.message) { 
      options.messages['comparedates'] = options.message; 
     } 
    } 
); 

검증 방법 : 양식이 DOM에 전에

$.validator.addMethod('comparedates', function (value, element, params) { 
    var otherFieldValue = $('input[name="' + params.otherpropertyname + '"]').val(); 
    if (otherFieldValue && value) { 
     var currentValue = Date.parse(value); 
     var otherValue = Date.parse(otherFieldValue); 
     if ($(element).attr('name').toLowerCase().indexOf('begin') >= 0) { 
      if (params.allowequality) { 
       if (currentValue > otherValue) { 
        return false; 
       } 
      } else { 
       if (currentValue >= otherValue) { 
        return false; 
       } 
      } 
     } else { 
      if (params.allowequality) { 
       if (currentValue < otherValue) { 
        return false; 
       } 
      } else { 
       if (currentValue <= otherValue) { 
        return false; 
       } 
      } 
     } 
    } 
    customValidation.addDependatControlValidaitonHandler(element, params.otherpropertyname); 
    return true; 
}, ''); 
+0

유효성 검사기 플러그인에 대한 cdn 링크를 확보하고 jsfiddle.net에서 문제를 복제하는 데모를 만듭니다. – charlietfl

답변

0

은 어쩌면 당신은, 너무 일찍이 코드를로드 . 코드가 $ (document) .ready (여기서 코드)로 보호되는지 확인하십시오.

관련 문제