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正则表达式
这里主义是字节长度
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正则表达式
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',
lengthRangeText:'总字节数不能超过10个(汉字算2个)'