2017-12-16 15 views
0

YouTube 링크의 유효성을 검사하는 맞춤 메소드가 있습니다. 모든 것이 잘 작동하지만 입력을 비워두면 계속 실행됩니다.내 사용자 지정 메서드가 빈 입력의 유효성을 검사하는 이유는 무엇입니까?

입력을 공백으로 남겨도 사용자 정의 메서드를 실행할 수 없지만 입력 된 값의 유효성을 검사하는 방법은 무엇입니까?

방법

jQuery(function() { 
    var youtubePattern = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=|\?v=)([^#\&\?]*).*/; 

    jQuery.validator.addMethod("youtubeVideo", function(value) { 
     return youtubePattern.test(value); 
    }, "Must be a valid Youtube video"); 
}); 

검증

$("#addPostsForm").validate({ 
rules: { 
    post_video: { 
     youtubeVideo: true 
    } 
} 
+1

[문서의 예제보기] (https://jqueryvalidation.org/jQuery.validator.addMethod/). 세 사람 모두 질문에 대답하는 공통된 코드가 하나 있습니다. '이것을 돌려 보내라. 옵션 (요소) || youtubePattern.test (value);' – Sparky

+0

@ Sparky를 추가하면 모든 유효성 검사가 중단됩니다. – Brad

+0

당신의 문제는'element' 인자를 커스텀'addMethod' 함수에 넘겨주지 않는다는 것입니다. 'function (value)'~ 그렇지 않으면'function (value, element)'로 잘 작동합니다 : https://jsfiddle.net/zp0yg74a/ – Sparky

답변

-1

왜 간단하게 검증 기능 내부의 값 길이에 대한 검사를 추가?

jQuery(function() { 
    var youtubePattern = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=|\?v=)([^#\&\?]*).*/; 

    jQuery.validator.addMethod("youtubeVideo", function(value) { 
     if (value.length == 0){ 
      return false; 
     } 
     return youtubePattern.test(value); 
    }, "Must be a valid Youtube video"); 
}); 
+0

나는 그것을 시험해 보았다. 그리고 아직도 그것을 검증하고있다. – Brad