2012-09-10 2 views
5

기본적으로 텍스트 상자의 설명은 'and'단어를 제외하고 3 단어보다 커서는 안됩니다. 나는 잘 작동하는 C#에서 다음 서버 쪽 유효성 검사를 구현했습니다.자바 스크립트에서 C# 서버 쪽 유효성 검사를 복제하십시오.

if (Desc.Trim().ToString() != "") 
{ 
    MatchCollection collection = Regex.Matches(Desc.Replace("and", ""), @"[\S]+"); 

    if (collection.Count > 3) 
    { 
     ErrorMsg.Append("Description should contain at most 3 words(excluding 'and')."); 
     ErrorMsg.Append("\\n"); 
    } 
} 

그러나 Javascript에서 동일한 작업을하는 데 문제가 있습니다. 나는 다음을 시도했다. 그러나 자바 스크립트에 대한 더 나은 지식을 가진 누군가가 오류를 볼 수 있기를 바란다. if가 페이지에서 실행되는 더 큰 유효성 검사 함수의 일부임을 유의하십시오. 경고는 if가이 경우에 발생했는지 여부를 확인하기위한 것입니다 (이 경우는 그렇지 않습니다). - 블록이 제거되면 페이지의 나머지 JS가 제거됩니다. 잘 작동합니다.

if (Desc.val().trim() != "") 
{ 
    alert('1'); 
    !regexWordRule.test(Desc.val()); 
    alert('2'); 

    if (Desc.val().match(regexWordRule).length > 3) 
    { 
     errorText += "Description should contain at most 3 words(excluding 'and')."; 
    } 

    valid = false; 
} 

아래는 js 파일 맨 위에 정의 된 regexWordRule입니다.

var regexWordRule = /[\S]+/; 

답변

2

당신은 더 나은 해결책을 찾을 수 있지만,이 방법은 내 마음에 와서, 그래서 그것을 게시 오전 :

var input = "and lorem and ipsum"; 

// remove ands 
var deandizedinput = input.replace(/\band\b/g, ' '); 

// replace all white spaces with a single space 
var normalizedinput = deandizedinput.replace(/\s+/g, ' '); 

// split the input and count words 
var wordcount = normalizedinput.trim().split(' ').length; 

바이올린 here합니다.

+0

위대한 작품 - 많은 감사합니다. 내 이해를 위해 제거 및 검색에서 \ b를 설명 할 수 있습니까? –

+1

\ b는 단어 경계와 일치합니다. 여기에서는 독립 실행 형 단어 'and'를 제거하고이를 포함하는 단어 (예 : 밴드, 풍경 등)에서 하위 문자열 만 제거합니다. @ Dima의 답변도 참고하십시오. 원격 검증은 고려해야 할 가치가 있습니다. –

1

MVC3을 사용하는 경우 모델 (RemoteAttribute)에서 원격 유효성 검사를 사용할 수 있습니다. 또는 Ajax 요청을 통해 이러한 종류의 유효성 검사를 수동으로 수행 할 수 있습니다.

이렇게하면 코드가 중복되지 않게됩니다.

관련 문제