统一校验的东东

应公司要求写了一个统一校验的东西 ,结果发现跟prototype一个插件思想上重合了,它是一年前开源的,我也是差不多一年写的,今天拿出来晒下。



//让渡$
var $j = jQuery.noConflict();

function MyValidate(){

}

//验证是否为空  
MyValidate.checkEmpty = function(obj){
var flag = true;
if (StringUtil.getLength(StringUtil.trimAllSpace(obj.value))<1){       
   $j(obj).attr("title","["+obj.titles+"]项不能为空。");     
   flag = false;
   return flag;
}
return flag;
}

//验证取值范围
MyValidate.checkLength = function(obj){
var flag = true;
if(StringUtil.getLength(obj.value)<1) return flag;//对象为空则返回
//获取当前对象长度
var len=StringUtil.getLength(StringUtil.trimAllSpace(obj.value));
if($j(obj).attr("maxLength")<len||len<$j(obj).attr("minLength")){
  $j(obj).attr("title","["+obj.titles+"]取值范围是\'"+$j(obj).attr("minLength")+"\'位到\'"+$j(obj).attr("maxLength")+"\'位之间。");         
     flag = false;//设置返回标志
      return flag;
  }
    return flag;
}
//验证最大长度
MyValidate.checkMaxLength = function(obj){
    var flag = true;
if(StringUtil.getLength(obj.value)<1) return flag;//对象为空则返回
if(StringUtil.getLength(StringUtil.trimAllSpace(obj.value))>$j(obj).attr("length")){
            $j(obj).attr("title","["+obj.titles+"]最大长度是\'"+$j(obj).attr("length")+"\'。");         
            flag = false;//设置返回标志
            return flag;
}
    return flag;
}
//验证邮政编码
MyValidate.checkPostalCode = function(obj){
    var flag = true;
if(StringUtil.getLength(obj.value)<1) return flag;//对象为空则返回
if(!VerifyUtil.isPostalCode(StringUtil.trimAllSpace(obj.value))){
$j(obj).attr("title","请输入正确的["+obj.titles+"]。");  
            flag = false;
            return flag;
}
    return flag;
}

//验证固定电话与手机号码
MyValidate.checkPhoneAndMobile = function(obj){
    var flag = true;
if(StringUtil.getLength(obj.value)<1) return flag;//对象为空则返回
if(!VerifyUtil.isMobile(StringUtil.trimAllSpace(obj.value)) || !VerifyUtil.isPhoneEx(StringUtil.trimAllSpace(obj.value))){
$j(obj).attr("title","请输入正确的["+obj.titles+"]。");  
            flag = false;
            return flag;
}
    return flag;
}
//验证只能输入整数字符(不带小数点)
MyValidate.checkIsInt = function(obj){
    var flag = true;
if(StringUtil.getLength(obj.value)<1) return flag;//对象为空则返回
if(!VerifyUtil.isInt(StringUtil.trimAllSpace(obj.value))){
$j(obj).attr("title","请输入正确的["+obj.titles+"]。");  
            flag = false;
            return flag;
}
    return flag;
}

//验证非法字符
MyValidate.checkValidString = function(obj){
var flag = true;
if(StringUtil.getLength(obj.value)<1) return flag;//对象为空则返回
if(!VerifyUtil.isValidString(StringUtil.trimAllSpace(obj.value))){
$j(obj).attr("title","["+obj.titles+"]中存在非法字符。");          
            flag = false;
            return flag;
}
return flag;
}

//验证传真号码
MyValidate.checkPhoneEx = function(obj){
var flag = true;
if(StringUtil.getLength(obj.value)<1) return flag;//对象为空则返回
if(!VerifyUtil.isPhoneEx(StringUtil.trimAllSpace(obj.value))){
$j(obj).attr("title","请输入正确的["+obj.titles+"]。");
            flag = false;
            return flag;
}
return flag;
}

//验证手机号码
MyValidate.checkMobile= function(obj){
var flag = true;
if(StringUtil.getLength(obj.value)<1) return flag;//对象为空则返回
if(!VerifyUtil.isMobile(StringUtil.trimAllSpace(obj.value))){
$j(obj).attr("title","请输入正确的["+obj.titles+"]。");           
            flag = false;
            return flag;
}
return flag;
}



//验证EMAIL
MyValidate.checkEmail= function(obj){
var flag = true;
if(StringUtil.getLength(obj.value)<1) return flag;//对象为空则返回
if(!VerifyUtil.isEmail(StringUtil.trimAllSpace(obj.value))){
$j(obj).attr("title","请输入正确的["+obj.titles+"]。");
            flag = false;
            return flag;
}
return flag;
}

var myArray = new Array("checkEmpty","checkLength","checkMaxLength","checkPostalCode","checkValidString","checkPhoneEx","checkMobile","checkEmail","checkPhoneAndMobile","checkIsInt");


//验证元素
//@param area 参数可以是div,table,form等元素的id或styleId表示的是一个范围。
function checkElement(area,type){

var flag = true;//返回标志
  //按回车跳转事件
$j("input,textarea,select").each( function(i) {
$j(this).attr("tabIndex",++i);
$j(this).keypress( function() {
     FormUtil.nextFocusEx(this.form);
        });
});
    
//匹配一个范围内所有的文本框及文本域
$j("#"+area).find("input[@type=text],textarea").each(function (i) {  

//提交校验
  if(type=="submit"){
               flag=initValidate(this);
            
  }
 
    //失去焦点校验
  $j(this).blur( function() {
              flag=initValidate(this);
               if(!flag)
                 return flag; 
  });    
});

    $j("#"+area).find(".Edit_input_error").each(function (i) { 
     //提交后定位到第一个错误样式项并弹出提示信息
     var errorMessage=$j("#"+area).find(".Edit_input_error:first").attr("title");//匹配第一个错误样式项title属性
     alert(errorMessage);//弹出错误信息
        $j(".Edit_input_error:first").focus();//光标定位
           flag = false;   
           return flag;//返回不提交
        });
return flag;
}

function  initValidate(obj){
var flag = true;//返回标志
var funArr = new Array();//保存函数名称的数组
var attrArr = new Array();//保存函数属性的数组
var classArr=obj.className.split(" ");//根据" "来获取多校验函数
    for(var i=0,j=0;i<classArr.length;i++){
if(classArr[0].indexOf("attr")==-1){//判断class首个对象是否为添加属性,
   // flag = false;
                return flag;//不满足条件返回
}
eval("$j(obj)."+classArr[0]);//给当前操作对象动态添加'titles'属性

var returnArr=classArr[i].split(".");//根据"."来分离函数及属性
         if(2==returnArr.length){
          funArr[j]=returnArr[0];
          attrArr[j]=returnArr[1];
//alert(funArr[j]);
// alert(attrArr[j]);
                  eval("$j(obj)."+attrArr[j]); //给当前操作对象动态添加属性  
             }else{
                  funArr[j]=returnArr[0];  
}
j++;
        } 
for(var i=0;i<funArr.length;i++){
for(var a in myArray){
   if(funArr[i] ==myArray[a]){
  MyValidate.validate=MyValidate[funArr[i]];
      var result=MyValidate.validate(obj);
  if(!result){
$j(obj).addClass('Edit_input_error');//加载错误样式
     flag = false;
                     return flag;//不满足条件返回
  }else{
  //flag = true;
                     $j(obj).removeClass('Edit_input_error');//移除错误样式
$j(obj).removeAttr('title');//校验通过移除title属性
  }
   }
}
}

return flag;
}



这个东东并没有什么成果而言,主要是它的实现方式吧,本人JQUERY用的不是很好,很多地方高手看了不要笑,但可以指点吧!文中具体的校验方法的代码我这里就不晒了,网上一搜一大片,没有必要写出来!

你可能感兴趣的:(jquery,prototype,J#)