ExtJS 校验关于包含中文的“字节长”
这里主义是字节长度
var text = Ext.create('Ext.form.TextField',{
     fieldLabel:'名称',
     labelAlign:'right',
     width:400,
     id:'text',
     name:'text',
     allowBlank:'true',
     maxLength:10,
     minLength:1,
     regex:/[^\x00-\xFF]/,
     regex:'名称最长不能超过10个字节,其中可以包括汉字'}) 其实maxLength:10和minLength:1已经能控制字符不超过10个字符 ,但是不能控制总字节不超过10个,因为一个汉字相当于两个字节 匹配双字节字符(包括汉字在内):[^\x00-\xff] 
这个正则表达式regex:/[^\x00-\xFF]/放在这总觉得不对请大神指正 
并给出正确的正则表达式!!!ExtJSJS正则表达式

解决方案 »

  1.   

    function Checkstrlenght(chars) {
        var sum = 0;
        for ( var i = 0; i < chars.length; i++) {
            var c = chars.charCodeAt(i);
            if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) {
                sum++;
            } else {
                sum += 2;
            }
        }
        return sum;
    }Ext.apply(Ext.form.VTypes, {lengthRange:function (v) {
    if(Checkstrlenght(v)>10){
    return false;
    }
    return true
    }, ipText:"总字节数不能超过10个(汉字算2个)"});
    在TextField里面加上 vtype : 'lengthRange',
      

  2.   

    再提一点//最后一句text提示显示不出来  应改为
    lengthRangeText:'总字节数不能超过10个(汉字算2个)'