js校验简单实现


/*<input type="text"name="open_id" isNull="notnull" minLen="4" maxLen="10" dataType="email|code|title|password|tel|INTEGER"   value="${open_id}"/>
 * */   
$.fn.validation = function(obj){
		var result = {check:true};
		var attr = ["minLen","caption","maxLen","isNull","dataType"]
		//获取obj中所有对象, 只要有一个对象不符合就返回
		$(this).find("input").each(function(){		
			//console.log($(this).is(":hidden"));
			if($(this).css("display") != "none"){
				var o = {};
				var that = $(this);
				for(var i = 0 ; i < attr.length; i++) {
					o[attr[i]] = that.attr(attr[i]);
				}
				o['val'] = that.val();
				var msg = check(o);
				if('' != msg) {
					var list = result['list'];
					if(!list) {
						list = [];
						result['list'] = list;
					}					
					result.check = false;
					list.push({obj:that,msg:msg});
				}
				console.log($(this).val());

			}			
		});
		
		return result;
	}
	function check(o) {
		//var o = obj[e];
		//取出对象中所有的限制条件  obj[e].minLen
		var caption = o.caption ? o.caption:'';
		var val = o.val ? o.val:'';
		var minLen = o.minLen ? o.minLen:-1;
		var maxLen = o.maxLen ? o.maxLen:-1;
		var isNull = o.isNull ? o.isNull:-1;
		var datatype = o.datatype ? o.datatype:-1;
		var len = val.length;
		//先判断是否为空
		if(isNull!=-1 && /^notnull$/i.test(isNull) && len==0){
			return caption+"不允许为空,请重新输入!";
		}
		//判断是否符合最小长度
		if(minLen!=-1 && /^([0-9])([0-9])*$/.test(minLen)){
			var t = val.replace(/[^\x00-\xff]/g,"AA");
			if(t.length < minLen){
				return caption + "输入长度不能小于"+minLen+"\r\n\r\n目前您输入的长度为(一个汉字占两个长度位置):"+t.length;
			}
		}
		//判断是否符合最大长度
		if(maxLen!=-1 && /^([0-9])([0-9])*$/.test(maxLen)){
			var t = val.replace(/[^\x00-\xff]/g,"AA");
			if(t.length > maxLen){
				return caption + "输入长度不能超过"+maxLen+"\r\n\r\n目前您输入的长度为(一个汉字占两个长度位置):"+t.length;
			}
		}
		//判断特殊内容验证
		if(datatype!=-1){
			if(/^email$/i.test(datatype)){
				var reg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;
				if(!reg.test(val)){
						return caption + "不合法,请重新输入!";
				}
			}
			if(/^code$/i.test(datatype)){
				if (!/^\w+$/.test(val)){
					return caption + "必须由字母、数字及下划线组成,请重新输入!";
				}
			}
			if(/^title$/i.test(datatype)){
				if(!/^[a-z\u4E00-\u9FA5]+$/i.test(val)){
					return caption + "只能输入中文或字母,请重新输入!"
				}
			}
			if(/^passowrd$/i.test(datatype)){
				var reg = /^([a-zA-Z0-9])*([a-zA-Z0-9])*$"/;
				if(!reg.test(val)){
						return caption + "输入必须为数字或字母!";
				}
			}
			if(/^tel$/i.test(datatype)){
				var reg = /^([0-9])*-?([0-9])*$/;
				if(!reg.test(val)){
						return caption + "输入必须为-或数字!";
				}
			}
			if(/^INTEGER$/i.test(datatype)){
				console.log(val)
				if(/^(-|\+)+/.test(val)){
						return caption + "输入不能带有正负(+,-)符号,只能是正整数!";
				}
				if(/(\.)+/.test(val)){
						return caption + "输入不能带有小数点(.)符号,只能是整数!";
				}
			}
		}
		return '';
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值