`
fordream
  • 浏览: 62735 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

阅读更多

   修改EXT的TextField的验证属性(allowBlank和maxLength)的提示信息.
   TextField本身验证长度时把中文当1位来计算的,这样针对像oracle数据库的varchar2(10)这种数据类型在前台作长度限制时就不太好控制.EXT也没相关的可以设置的属性,当然可以用TextField的表达式验证来判断.我喜欢偷懒,所以直接重写TextField,顺便把blankText和maxLengthText属性默认成TextField的FieldLabel+提示信息.

 

/**
 * @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
1
分享到:
评论
2 楼 chenzi 2014-11-20  
value instaceof String应该是instanceof 没有看懂
1 楼 henchong 2013-01-15  
value instaceof String应该是instanceof  具体看不懂这个有什么作用

相关推荐

Global site tag (gtag.js) - Google Analytics