Ext TextField默认提示信息,并支持中文按2个长度计算

本文介绍了一种针对ExtJS框架中的TextField组件进行中文字符长度验证的方法。通过对原有验证函数的重写,使得该组件能够准确计算包含中文字符的字符串长度,并支持自定义提示信息。
/**
 * @class  Ext.form.TextField
 * @override  Ext.form.TextField
 * @description  修改TextField的默认提示信息,并支持中文2位的计算
 */
Ext.override(Ext.form.TextField,{
      //重写验证涵数
    validateValue : function(value){
              if(this.allowBlank == false){ //不允许为空
              if(value == null || value == ''){
                            this.markInvalid(String.format(this.blankText,value));
                            return false;
                     }
               }
               var maxLen = this.maxLength;
               var maxLenText = this.maxLengthText;
               if(maxLenText.indexOf('{0}') != -1){
                     if(maxLen != null && maxLen != 'undefined' && maxLen > 0){
                           var regex = /[^\x00-\xff]/g;  //中文正则
                  var len ;
                           if(value instaceof String){
                                 //将中文替换成2位字符
                      len = value.replace(regex,'**').length;
                            }else{
                                 len = value.length;
                            }
                            var label = this.fieldLabel;
                            if(label != null && label != 'undefined'){
                                 //去掉fieldLabel中生成的不必要字符
                      if(label.indexOf('</') != -1 ){
                                      label = label.substring(label.lastIndexOf('>')+1, label.length);
                                 }
                                 if(len > maxLen){
                                    //验证未通过,并设置提示信息
                        this.markInvalid(String.format(label+'长度不能大于'+maxLen+'位!(中文占2位)'));
                                    return false;
                                 }
                                 return true;
                           }
                      }
                }else{
                      var len = value.length;
                      if(len > maxLen){
                           this.markInvalid(String.format(maxLenText ,value));
                           return false;
                      }
                    return true;
                }
        }
});
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值