2014-02-10 1 views
6

보낸 사람 필드를 통해 텍스트를 보내고 자하는 사람의 발신자 필드에는 11 자로 제한됩니다. æ 또는 ø 또는 å는 두 자로 간주됩니다. jquery 유효성 검사기를 사용하여 카운트하고 사용자 메시지를 표시합니다. 매회 maxlength, 마이너스 2, 사용자가 æ 또는 ø 또는 å을 입력하고 -z부터 입력하면 마이너스 한 문자 만 입력 할 수 있습니까?jquery maxlength "æ"또는 "ø"또는 "å"는 2 자로 계산해야합니다.

지금 스크립트는 a-z와 øøå, 0-9 및 공백을 허용하지만 æøå을 두 자로 간주하지 않습니다. 어떻게해야합니까?

jQuery.validator.addMethod("accept", function(value, element, param) { 
return value.match(new RegExp("^" + param + "$")); 
}); 
from: { 
      required: false, 
      accept: "[a-zA-Z0-9æøåÆØÅ ]+", 
      minlength: 2,  
      maxlength: 11 
}, 
+0

는 다른 모든 문자에 무슨 관련이 있습니까? –

+0

안녕하세요 jukka, 나는 -zA-Z0-9æøåÆØÅ 및 공백이 허용되는 것으로 생각했으며 다른 모든 문자는 거부해야하며 æøå은 두 자로 계산해야합니다. – Anders

답변

2

시도 뭔가 :

function countChar(mystring){ 
    var count=0; 
    for (var i=0;i<mystring.length;i++) 
    { 
     if (mystring[i].match(/[æøåÆØÅ]/)) 
      count += 2; 
     else 
      count++; 
    } 
    return count; 
} 
+0

안녕하세요, PHP처럼 보입니다. 그것 jquery?, 나는 라이브 유효성 검사가 필요하기 때문에, 사용자가 게시 할 필요가 없기 때문에, 피드백을 얻기 위해 양식을 요구합니까? – Anders

+1

@ user3291960 그것은 순수한 자바 스크립트입니다. 나는 당신이 다음과 같은 것을 찾고 있다고 생각합니다 : 'function validate (mystring) { var count = 0; (mystring의 var i) (mystring의 i) { if (mystring [i] .match (/ [çøåÆØÅ /)) count + = 2; else if (mystring [i] .match (/ [a-z0-9]/i)) 카운트 ++; else { 경고 ('잘못된 문자'+ mystring [i]); false를 반환합니다. } } if (count> 11 || count <2) { alert ('문자열 길이가 잘못되었습니다'); false를 반환합니다. } return true; }' – ojovirtual

+0

안녕하세요, 다행히도 지금은 경고 상자가 표시됩니다.이 스크립트를 새 jQuery.validator.addMethod에 통합하면 어떻게 maxlength로 출력 할 수 있습니까 ?? – Anders

1

당신은 그렇게 정규식을 사용할 수 있습니다

var str = "A string with some strange characters like: æ ø å Æ Ø Å"; 
var total = str.length + (str.match(/æ|ø|Æ|Ø|Å/g)||[]).length; 

str.length = 55
total = 60

1

먼저 그것을 인코딩해야합니다.

function encode_utf8(s) { 
    return unescape(encodeURIComponent(s)); 
} 

function decode_utf8(s) { 
    return decodeURIComponent(escape(s)); 
} 

당신은 행동에 그것을보고 http://jsfiddle.net/vLmQ8/에서 좀 걸릴 수 있습니다.

자세한 내용은 http://monsur.hossa.in/2012/07/20/utf-8-in-javascript.html을 참조하십시오. 이 같은

+0

이것은 올바른 방법입니다. 명시 적으로 요구되지 않은 문자에 대해서도 작동합니다. (실제로 인코딩은 UTF-8이라고 가정하지만 실제로는 그렇게 들릴 것입니다.) 완전한 대답을 위해서는 인코딩 결과의 길이를 실제로 계산하도록 코드를 확장해야합니다. –

관련 문제