2013-07-03 1 views
2

JQuery 유효성 검사 플러그인을 위해 과거에 몇 가지 맞춤 메소드를 조합했습니다.하지만 여러 조건에 대해 확인하고 싶습니다.JQuery 유효성 검사 사용자 정의 메서드에 여러 조건을 추가하는 좀 더 우아하고 확장 가능한 방법이 있습니까?

필드에서 html의 존재를 감지하려고하는 간단한 시나리오입니다. 나는 광범위한 Regex를 필요로하지 않는다, 나는 단지 html이 클라이언트 측 패션으로 허용된다는 것을 사용자에게 말하고 싶다. 필드 값에 html이 있으면 당연히 서버 쪽 제출을 차단하고 있지만 멋진 사용자 환경을 원합니다.

몇 가지 주요 요소를 찾는 더 간단한 방법이 있어야합니다. 배열을 반복하면서 할 수 있습니까? 아마,이 같은

var el=$('<div>').html(value); 
commentclean = ( el.html() == el.text() 
       && el.text().indexOf('http') == -1 
); 
+0

html 마크 업을 찾으려면 정규 표현식을 사용해야합니다. 예를 들어 문자열'0 <1'은 html을 포함하지 않습니다. clien 쪽에서 정규식을 사용하는 것은 당신이 짐작하는 것처럼 비싸지 않다 :) – YD1m

답변

1

뭔가 :

<script language="javascript"> 
    $(document).ready(function(){ 

    $.validator.addMethod("findhtml", function(value, element) { 

var commentclean = new Boolean(); 

if (element.value.indexOf("<") != -1) 
{ 
    commentclean= false; 
    //alert('found <'); 
} 
else if 
(element.value.indexOf("http") != -1){ 
    commentclean= false; 
    //alert('found http'); 
} 
else 
{ 
    commentclean= true; 
    //alert('nothing found') 
} 

return this.optional(element) || (commentclean); 

}, "* match the string"); 

}); 
</script> 
+0

Nice! 대단히 감사합니다. 클라이언트 쪽 검사에 몇 가지 조건을 추가하는 간단하고 확장 가능한 방법입니다. –

0

은 당신이 뭔가를 할 수 있을까?

$(document).ready(function(){ 

    $.validator.addMethod("findhtml", function(value, element) { 

     var commentclean = true, 
      disallowed = ['<', 'http']; 

     for (var i=0, len = disallowed.length; i<len; i++) { 
      if (element.value.indexOf(disallowed[i]) != -1) { 
       commentclean = false; 
       break; 
      }   
     } 

     return this.optional(element) || (commentclean); 

    }, "* match the string"); 

}); 
관련 문제