统一校验的东东

应公司要求写了一个统一校验的东西 ,结果发现跟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;
}
[color=red]
var myArray = new Array("checkEmpty","checkLength","checkMaxLength","checkPostalCode","checkValidString","checkPhoneEx","checkMobile","checkEmail","checkPhoneAndMobile","checkIsInt");[/color]

[color=orange]//验证元素
//@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;
}[/color]


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值