jquery maxlength“æ”或“ø”或“å”应该算作两个字符

时间:2014-02-10 08:28:48

标签: jquery character validation maxlength

我想通过短信网关发送文本,并且在from字段中限制为11个字符。和æ或ø或å算作两个字符。 我使用jquery验证器来计算,并显示用户消息,我如何获得maxlength,每次减去2,用户输入æ或ø或å,只有减去一个字符,当它来自a-z ??

现在脚本,允许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
},

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:1)

您可以使用正则表达式执行此操作:

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

str.length = 55
  的 total = 60

答案 2 :(得分: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