Ext TextField 기본 알림 정보와 중국어 2바이트 계산 지원

2840 단어 ext기본값textfield
EXT의 TextField 인증 속성 (allowBlank 및 maxLength) 에 대한 알림 정보를 수정합니다.TextField 자체가 길이를 검증할 때 중국어를 한 자리로 계산하기 때문에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;
                }
        }
});


좋은 웹페이지 즐겨찾기