ExtJs的TextField内容长度限制(中文全角为2个长度)

阅读更多

           extjs版本:3.3

           ext的TextField本身自带长度校验,不过是按照字符的长度进行计算,汉字或者全角符号都只计算一个长度,由于项目需要,需要按照两个长度进行计算,可以通过修改Ext的源码进行修改,在ext源码包的TextField定义的地方,找到getErrors方法,找到长度比较的位置,如下

 

		if (value.length < this.minLength) {
			errors.push(String.format(this.minLengthText, this.minLength));
		}

		if (value.length > this.maxLength) {
			errors.push(String.format(this.maxLengthText, this.maxLength));
		}

 

将其修改为:
	/**
	 * 将字符长度转换为字节长度,汉字以及全角字符占2字节
	*/
	var valueLength = 0;
        for (var i = 0; i < value.length; i++) {
            var c = value.charCodeAt(i);
            //根据单双字节进行长度计算,单字节+1
            if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) {
                valueLength++;
            }else {
                valueLength += 2;
            }
        }
	if (valueLength < this.minLength) {
		errors.push(String.format(this.minLengthText, this.minLength));
	}

	if (valueLength > this.maxLength) {
		errors.push(String.format(this.maxLengthText, this.maxLength));
	}
 

你可能感兴趣的:(ext,textfield,长度校验,单字节,双字节)