欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-12 18:47:56
...

           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));
	}