自定义Jquery表单验证
作者:喻家军 发表时间:2015-12-10 14:48:34

因项目中表单验证,在某些特殊场景下 jquery.validate.min.js 不能满足需求,所以自己简单写了个

使用方式:

<input type="text" id="Title" name="Title" validate="{ required: true,phone:true, messages: { required: '活动主题不能为空',phone:'手机号码格式错误'}}" />

//判断是否通过
function submit() {
        var result = validForm("activeForm");
        if (result.issuccess) {
            //成功
        } else {
            alert(result.tip);
        }
    }
验证完整代码:

//非空 required  手机号 phone  身份证 card  email email 数字 number
function validForm(formId) {
	var tip = "";
	var issuccess = true;
	var items = $("#" + formId).find("input:text,textarea");
	$.each(items, function (name, val) {
		var str = $(val).attr("validate");
		if (str==undefined)
			return true;
		var valid = eval('(' + str + ')');
		var value = $(val).val();
		//非空
		if (valid.required == true) {
			issuccess = ValidateEmpty(value);
			if (issuccess == false) {
				tip = valid.messages.required == undefined ? "此项必填" : valid.messages.required;
				return false;
			}
		}
		//手机号
		if (valid.phone == true) {
			issuccess = ValidatePhone(value);
			if (issuccess == false) {
				tip = valid.messages.phone == undefined ? "手机号码格式不正确" : valid.messages.phone;
				return false;
			}
		}
        //数字
		if (valid.number == true)
		{
		    issuccess = ValidateNumber(value);
		    if (issuccess == false) {
		        tip = valid.messages.number == undefined ? "必须为数字" : valid.messages.number;
		        return false;
		    }
		}
	});
	return { issuccess: issuccess, tip: tip };
}
//非空验证
function ValidateEmpty(value) {
	if (value == undefined)
		return false;
	else if ($.trim(value).length == 0)
		return false;
	return true;
}
//验证手机
function ValidatePhone(value) {
	if (value == undefined)
		return false;
	var length = value.length;
	var mobile = /^1[3|4|5|7|8]\d{9}$/;
	return (length == 11 && mobile.exec(value)) ? true : false;
}
//验证身份证
function ValidateCard(value) {
	if (value == undefined)
		return false;
	// 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
	var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
	return reg.test(value);
}
//验证邮箱
function ValidateEmail(value) {
	if (value == undefined)
		return false;
	
	var reg = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return reg.test(value);
}
//验证数字
function ValidateNumber(value) {
	if (value == undefined)
		return false;
	
	var reg = /^[0-9]*$/;
	return reg.test(value);
}