java开发之js网页校验

在web开发中,我们经常需要进行用户的输入校验,因此产生了下面的一个js插件:

控件源码:

 

//网页输入校验工具
//version:2.0
//作者:潘攀(1871870808@qq.com)
//时间:2012-10-10
//需要依赖:jquery-1.7.2.js
//支持校验类型:不为空、数字、非数字、邮箱、最大长度、最小长

度、起始字符、终止字符、AJAX验证



//显示错误信息
//obj  校验失败的控件对象
//msg  错误信息
function showErr(obj,msg){
	//假设页面中不存在与当前控件"name"属性相同的控件的

时候,隐藏之前的错误提示
	hideErr(obj);
//	var offset = obj.offset();
//	var left = offset.left+obj.width()+10;
//	var div = document.createElement('<div 

id="errDiv'+obj.prop("validateId")+'" style="z-

index:2000;position: absolute;left:'+left

+'px;top:'+offset.top+'px;color:black;width:">');
//	var img = document.createElement('<img 

id="errImg'+obj.prop("validateId")+'" 

src="/rdfweb/mysoftlife/view/images/flag.png" style="z-

index:3000;left:'+left+'px;top:'+(offset.top

+5)+'px;width:10px;height:13px;position:absolute;">');
//	var span = document.createElement('<span 

id="errSpan'+obj.prop("validateId")+'" style="z-

index:2000;padding:5px;margin-left:-5px;border:1px solid 

#92c85a;left:'+(left+14)+'px;top:'+offset.top

+'px;background-color:#f5fcee;font-

size:9pt;position:absolute;">');
//	span.innerHTML=msg;
//	document.body.appendChild(div);
//	document.body.appendChild(img);
//	document.body.appendChild(span);
//	var span = $("<span>").html(msg);
	$(obj).after($("<span style='color:red;margin-

left:20px;' id='err"+$(obj).attr("validateId")+"'>"+msg

+"</span>"));
}

//隐藏错误信息
//obj  校验失败的控件对象
function hideErr(obj){
	errorCount--;
	var validateId = obj.attr("validateId");
	$("#err"+validateId).remove();
}

$(function(){
	getValidate();
});

//给当前页面绑定验证函数
function getValidate(){
	//初始化参数
	input=0;
	errors = 0;
	
	

	//设置表单拦截
	interceptForm("false");
	//隐藏所有错误信息
	hideAllErr();
	
	//文本框校验
	$("input[type=text],input

[type=password],textarea").each(function(){
		
		$(this).attr("validateId",input+"");
		input++;
		
		//按键按下时调用检查函数
		$(this).keyup(function(){
			boundProp($(this));
		});
		//失去焦点时也调用检查函数
			$(this).blur(function(){
				boundProp($(this));
			});
		}
	);
	
}

var errorCount = 0;

function boundProp(obj){
	
	//不为空
	if(setProp(obj,"notnull",obj.val()=="",obj.attr

("notnull"),"不能为空!")) return;
	//不为纯数字
	if(setProp(obj,"notnum",isDigit(obj.val

()),obj.attr("notnum"),"不能是纯数字!")) return;
	//只能是数字
	if(setProp(obj,"num",!isDigit(obj.val

()),obj.attr("num"),"只能是数字!")) return;
	//起始字符校验
	if(setProp(obj,"startwith",obj.val().indexOf

(obj.attr("startwith"))!=0,"只能以"+obj.attr

("startwith")+"开头!","")) return;
	//终止字符校验
	if(setProp(obj,"endwith",obj.val().indexOf

(obj.attr("endwith"))!=obj.val().length,"只能以"+obj.attr

("endwith")+"结尾!")) return;
	//邮箱地址
	if(setProp(obj,"email",!checkMail(obj.val

()),obj.attr("email"),"邮箱格式不正确!")) return;
	//字母开头
	if(setProp(obj,"letterStart",!letterStart

(obj.val()),obj.attr("letterStart"),"只能以字母开头!")) 

return;
	//密码参照校验
	if(setProp(obj,"refer",obj.val()!=$("#"+obj.attr

("refer")).val(),"两次密码不一致!","")) return;
	//最大长度
	if(setProp(obj,"max",lengthOf(obj.val())>eval

(obj.attr("max")),"最多输入"+obj.attr("max")+"个字

符,"+parseInt(obj.attr("max")/2)+"个汉字!","")) return;
	//最小长度
	if(setProp(obj,"min",lengthOf(obj.val())

>0&&lengthOf(obj.val())<eval(obj.attr("min")),"最少输

入"+obj.attr("min")+"个字符,","")) return;
	//以上判断都通过,即隐藏错误信息
	
	
	
	//ajax验证
	var str = obj.val();
	var params;
	if(obj.attr("ajax")!=null) {
		params = obj.attr("ajax").split(",");
		//校验地址
		var url = params[0];
		//后台接受参数的名字
		var keywordName = params[1];
		//后台判定通过回传的字符串
		var correctStr = params[2];
		//验证失败的提示语句
		var msg = params[3];
		$.ajax({
			url:url,
			data:keywordName+"="+obj.val(),
			dataType:"text",
			success:function(data){
			if(setProp(obj,"ajax",data!

=correctStr,msg,"校验失败,已存在!")) return;
			}
		});
	}
	
	hideErr(obj);
}

//检查表单是否可提交
function checkSub(form,callback){
	//重新绑定页面校验,避免使用js动态添加控件的时候检

测不到
	getValidate();
	//遍历表单的输入框和输入域,检查表单是否所有输入都

已合法
	checkForm(form);
	if(errors==0){
		if(callback){
			callback();
			return false;
		}
		return true;
	}else{
		return false;
	}
}
//检查表单
function checkForm(form){
	//先取消表单拦截,如果校验失败,拦截会再次加上
	interceptForm("true");
	//遍历
	form.find("input[type=text],input

[type=password],textarea").each(function(){
		if($(this).attr("notnull")!=null||

$(this).attr("num")!=null||$(this).attr("notnum")!

=null||$(this).attr("max")!=null||$(this).attr("min")!

=null||$(this).attr("email")!=null){
//			$(this).attr("name",""+input);
//			input++;
			$(this).keyup();
		}
	});
}

//
//设置表单拦截
function interceptForm(flag){
	$("form").each(function(){
		$(this).attr("subFlag",flag);
	});
}
//错误数量,用作标识出第一个出错的位置
var errors = 0;
//页面中需要监控的输入控件的数量
var input = 0;
//设置监控属性
function setProp(obj,prop,flag,msg,defaultMsg){
	if(obj.attr(prop)!=null&&flag){
		if(msg==""){
			msg=defaultMsg;
		}
		if(errors==0){
			//使第一个校验失败的控件获取焦点
			obj.focus();
			//控件获取焦点后,若控件不在当前显

示屏幕内,
			//页面会自动找到控件,显示在最顶端
			//让滚动条上移200像素,使控件靠近

屏幕中央
			

document.documentElement.scrollTop = 

document.documentElement.scrollTop - 200;
		}
		errors++;
		showErr(obj,msg);
		//出错,拦截表单提交
		interceptForm("false");
		return true;
	}
	return false;
}


//隐藏所有错误信息
function hideAllErr(){
	var errs = $("span");
	for(var i=0;i<errs.length;i++){
		if(errs.id!=null&&errs.id.indexOf("err")

>-1){
			$(errs[i]).remove();
		}
	}
	
}


//验证输入参数是否是数字
function isDigit(s) 
{ 
	var patrn=/^[0-9]{1,20}$/; 
	if (!patrn.exec(s)) return false 
	return true 
}

//验证邮箱
function checkMail(mail) {
	 var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0

-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	 if (filter.test(mail)) return true;
	 else {
		 return false;
	 }
}

//以字母开头
function letterStart(str){
	var filter  = /^[a-zA-z]/;
	if (filter.test(str)) return true;
	else {
		return false;
	}
}

function lengthOf(str){
	var strlen = 0; 
	for(var i = 0;i < str.length;i++)
	{
		if(str.charCodeAt(i) > 128){
			strlen += 2;
		}else{ 
			strlen++;
		}
	}
	return strlen;
}


 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值