ExtJS4.0有關自定義函數

//中文按2個字節 英文數字1個字節
function countCharacters(str){
     var totalCount = 0;
     for (var i=0; i<str.length; i++) {
         var c = str.charCodeAt(i);
         if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
             totalCount++;
         }else {    
             totalCount+=2;
         }
     }
     return totalCount;
}
//自定義驗證開始
Ext.apply(Ext.form.field.VTypes, {
    //驗證名字不超過32個字節
    serverNameLength:  function(v) {
        if(countCharacters(v)>32){return false;}else{return true;}
    },
    serverNameLengthText: '服務器別名長度不能超過32個字節',
    //驗證ip不重複
    IPAddress:  function(v) {
            var flag=false;
            Ext.Ajax.request({
                url: "serverInfoAction.do?m=validateIp",
                async:false,//這一項必須加上,否則後臺返回true,flag的值也爲false
                params: {ipStr:v},
                method: "POST",
                success: function(response) {
                   var text = response.responseText;
                   var responseArray = Ext.JSON.decode(text);
                           if(responseArray.success=='true'){
                           //alert("true");
                               flag = true; //0
                           }
                }
            });
            return flag;
    },
    IPAddressText: 'ip地址已存在',
    IPAddressMask: /[\d\.]/i,
    //用於編輯的時候,ip地址驗證唯一性,此時要保存原來的值,如果和原來的值相等,也要返回true
    IPAddressUpdateValidate:  function(v) {
            var flag=false;
            if(oldIp==v){
                flag=true;
            }else{
             Ext.Ajax.request({
                url: "serverInfoAction.do?m=validateIp",
                 async:false,//這一項必須加上,否則後臺返回true,flag的值也爲false
                params: {ipStr:v},
                method: "POST",
                success: function(response) {
                   var text = response.responseText;
                   var responseArray = Ext.JSON.decode(text);
                           if(responseArray.success=='true'){
                           //alert("true");
                               flag = true; //0
                           }
                }
             });
            }
            return flag;
    },
    IPAddressUpdateValidateText: 'ip地址已存在',
    appNameAddValidate:function(val,field){  
    		var nametemp;
        Ext.Object.each(field, function(key, value, myself) {
    		//alert(key + ":" + value);
            if (key === 'name') {
               nametemp = value; 
               return false;// stop the iteration
            }
        });
        var flag=1;
        if(countTemp == 1){
             flag = 1;
        }else{
            var ary=new Array();
            for(var m=0;m<countTemp;m++){
                 var tem = addForm.getForm().findField('appName'+(m+1)).getValue();
                if( nametemp != addForm.getForm().findField('appName'+(m+1)).getName()){
                    ary[m]=tem;
                }
            }
            for(var i=0;i<ary.length;i++){
                if(ary[i]==val){
                    flag = 0;
                    break;
                }
            }
        }
        if(flag == 0){
            return false;
        }else{
            return true;
        }
    }, 
    appNameAddValidateText:'應用名稱不可重複',   
    appNameUpdateValidate:function(val,field){  
    		var nametemp;
        //循環遍歷field,取出該對象的name屬性,並得到name值 
          Ext.Object.each(field, function(key, value, myself) {
             //alert(key + ":" + value);
               if (key === 'name') {
                  nametemp = value; 
                  return false;// stop the iteration
              } 
          });
          var flag=1;
          if(clickCountUpdate == 1){
               flag = 1;
          }else{
              var ary=new Array();
              for(var m=0;m<clickCountUpdate;m++){
                   var tem = updateForm.getForm().findField('appName'+(m+1)).getValue();
                  if( nametemp != updateForm.getForm().findField('appName'+(m+1)).getName()){
                      ary[m]=tem;
                  }
              }
              for(var i=0;i<ary.length;i++){
              
                  if(ary[i]==val){
                      flag = 0;
                      break;
                  }
              }
          }
          if(flag == 0){
              return false;
          }else{
              return true;
          }
    }, 
    appNameUpdateValidateText:'應用名稱不可重複',
    portValidate:function(val,field){  
    		var nametemp;
        Ext.Object.each(field, function(key, value, myself) {
    				//alert(key + ":" + value);
            if (key === 'name') {
               nametemp = value; 
               return false;// stop the iteration
            }
        });
        var flag=1;
        if(countTemp == 1){
             flag = 1;
        }else{
            var ary=new Array();
            for(var m=0;m<countTemp;m++){
                 var tem = addForm.getForm().findField('appPort'+(m+1)).getValue();
                if( nametemp != addForm.getForm().findField('appPort'+(m+1)).getName()){
                    ary[m]=tem;
                }
            }
            for(var i=0;i<ary.length;i++){
            
                if(ary[i]==val){
                    flag = 0;
                    break;
                }
            } 
        }
        if(flag == 0){
            return false;
        }else{
            return true;
        }
    }, 
    portValidateText:'端口不可重複',
    portUpdateValidate:function(val,field){  
    		var nametemp;
        Ext.Object.each(field, function(key, value, myself) {
    			//alert(key + ":" + value);
          if (key === 'name') {
             nametemp = value; 
             return false;// stop the iteration
          }
        });
        var flag=1;
        if(clickCountUpdate == 1){
             flag = 1;
        }else{
            var ary=new Array();
            for(var m=0;m<clickCountUpdate;m++){
                 var tem = updateForm.getForm().findField('appPort'+(m+1)).getValue();
                if( nametemp != updateForm.getForm().findField('appPort'+(m+1)).getName()){
                    ary[m]=tem;
                }
            }
            for(var i=0;i<ary.length;i++){
            
                if(ary[i]==val){
                    flag = 0;
                    break;
                }
            } 
        }
        if(flag == 0){
            return false;
        }else{
            return true;
        }
    }, 
    portUpdateValidateText:'端口不可重複'
});

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章