最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

js验证模型自我实现的具体方法_javascript技巧

来源:动视网 责编:小采 时间:2020-11-27 21:10:18
文档

js验证模型自我实现的具体方法_javascript技巧

js验证模型自我实现的具体方法_javascript技巧:市面上有很多表单验证的框架,教我们怎么验证表单的数据提交,说实话也真的很简单,但是我们会有一种感觉我们要是离开了这些框架的时候,我们有时候会束手无策,然后js验证写的很不规范,没有一套比较好的模式,那我写这篇的目的就是:我们自己构建js验证应该
推荐度:
导读js验证模型自我实现的具体方法_javascript技巧:市面上有很多表单验证的框架,教我们怎么验证表单的数据提交,说实话也真的很简单,但是我们会有一种感觉我们要是离开了这些框架的时候,我们有时候会束手无策,然后js验证写的很不规范,没有一套比较好的模式,那我写这篇的目的就是:我们自己构建js验证应该


市面上有很多表单验证的框架,教我们怎么验证表单的数据提交,说实话也真的很简单,但是我们会有一种感觉我们要是离开了这些框架的时候,我们有时候会束手无策,然后js验证写的很不规范,没有一套比较好的模式,那我写这篇的目的就是:我们自己构建js验证应该是什么样子的,来慢慢看一下。
假设我们现在写一个登录的页面(这可能是最简单的数据提交了哦),html页面会有一个用户名和一个密码的文本框让我们用户输入自己的用户名和密码,我们肯定是要判断用户名和密码是否为空,很明显这样的js验证判断是放在onblur事件里面触发,html代码如下:

ValidateHelper是一个对象,一些验证的方法就是在这个对象里面,我们规定一下,js验证用户的输入有两返回结果,一个成功,一个是失败。成功的时候我们输出成功的提示,
失败的时候我们输出失败的提示,对应的两个输出方法:
代码如下:
normalMessage: function(jqueryObj, msg) {
var emObj = $(jqueryObj.parent().find('em')[0]);
emObj.empty().append(msg);
},
warningMessage: function(jqueryObj, msg) {
ValidateHelper.clearMessage(jqueryObj);
var emObj = $(jqueryObj.parent().find('em')[0]);
var spanElement = ""
+ msg
+ "";
emObj.empty().append(spanElement);

},

还有一个清除提示的方法:
代码如下:
clearMessage: function(jqueryObj) {
var emObj = $(jqueryObj.parent().find('em')[0]);
emObj.empty();
},

我们已经写了成功和失败提示方法,以及清除提示的方法,这个三个是我们在后面会一直调用的基本方法。
好了,我们写一个验证用户输入不能为空的方法:
代码如下:
validateStringValueIsEmpty: function(obj, normalMsg, warningMsg) {
var jqueryObj = $(obj);
ValidateHelper.clearMessage(obj);
if ($.trim(jqueryObj.val()).length == 0) {
ValidateHelper.warningMessage(jqueryObj, warningMsg);
return false;
}
else {
ValidateHelper.normalMessage(jqueryObj, normalMsg);
return true;
}
},

这个方法会在onblur中被调用的验证方法,里面自然也用到了成功和失败提示方法,以及清除提示的方法。参数有三个,要验证的Dom或者jQuery对象、成功提示信息、失败提示信
息。要是为空就失败,要是不为空就成功。
上面写好的方法在onblur中会触发的,我们提交数据的时候还会用到得哦:
代码如下:
initInfo: function() {

var userName = $('#email');
var userPwd = $('#setPwd');
if (!ValidateHelper.validateStringValueIsEmpty(userName, '通过', '不能为空')) {
userName.focus();
return null;
}
if (!ValidateHelper.validateStringValueIsEmpty(userPwd, '通过', '不能为空')) {
userPwd.focus();
return null;
}

var userInfo = {
UserName: userName.val(),
UserPwd: userPwd.val()
};

return userInfo;
},

post: function() {

var userInfo = ValidateHelper.initInfo();
if (userInfo == null) {
return;
}

$.ajax({
type: "post",
dataType: "text",
url: "Ajax/Module.aspx",
timeout: 30000,
data: { UserName: userInfo.UserName, UserPwd: userInfo.UserPwd },
success: function(data) {
alert(data.toString());
}
});
}

这边呢要是在提交数据的时候会调用validateStringValueIsEmpty方法,要是返回的是失败 是不会真的提交给服务器端得。
那上面的情况是一个最简单的处理不为空的情况,要是我们想验证是否是Email 是否是身份证号码,这些复杂的验证实现如下:
代码如下:
var Validation = {
textCount: function(field, counter, maxLimit) {
var message = $(field).val();
if ($(field).val().length > maxLimit)
$(field).val(message.substring(0, maxLimit))
//$(counter).text(maxLimit-field.value.length);
},
refreshValidator: function(img, input) {
$(img).attr('src', $(img).attr('src') + "&r=" + Math.random());
$(input).focus();
},
isUrl: function(s) {
var strRegex =
/^((http(s)?|ftp|telnet|news|rtsp|mms):\/\/)?(((\w(\-*\w)*\.)+[a-zA-Z]{2,4})|(((1\d\d|2([0-4]\d|5[0-5])|[1-9]\d|\d).){3}(1\d\d|2([0-4]\d|5[0-5])|[1-9]\d|\d).?))(:\d{0,5})?(\/+.*)*$/;
return strRegex.test(s);
},
isDecimal: function(d) { var pattern = /^(([1-9]\d{0,12})|0)(\.\d{1,2})?$/; return pattern.test(d); },
isEmail: function(s) {
var pattern = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
return pattern.test(s);
},
isLowEmail: function(s) {
var b, e;
b = s.indexOf("@");
e = s.indexOf(".");
if (b <= 0) return false;
if (e < 0 || e == (s.length - 1)) { return false; }
return true;
},
clearNoNum: function(event, obj) {
event = window.event || event;
if (event.keyCode == 37 | event.keyCode == 39) {
return;
}
obj.value = obj.value.replace(/[^\d.]/g, "");
obj.value = obj.value.replace(/^\./g, "");
obj.value = obj.value.replace(/\.{2,}/g, ".");
obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
},
checkNum: function(obj) {
obj.value = obj.value.replace(/\.$/g, "");
},
isInteger: function(value) {
var integerReg = new RegExp(/^\d+$/);
return integerReg.test(value);
},
isValidateReg: function(value) {
var validateReg = /^([A-Za-z0-9\s\-\_\~\!\@\#\$\%\^\&\*\(\)\|\<\>\?\:\;\"\'\.\[\]\{\}\,\+\`\/\\\=]){6,16}$/;
if (validateReg.test(value)) {
return true;
}
return false;
},
isDate: function(strValue) {
var objRegExp = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/

if (!objRegExp.test(strValue))
return false;
else {
var arrayDate = strValue.split(RegExp.$1);
var intDay = parseInt(arrayDate[2], 10);
var intYear = parseInt(arrayDate[0], 10);
var intMonth = parseInt(arrayDate[1], 10);
if (intMonth > 12 || intMonth < 1) {
return false;
}
var arrayLookup = { '1': 31, '3': 31, '4': 30, '5': 31, '6': 30, '7': 31,
'8': 31, '9': 30, '10': 31, '11': 30, '12': 31
}
if (arrayLookup[parseInt(arrayDate[1])] != null) {
if (intDay <= arrayLookup[parseInt(arrayDate[1])] && intDay != 0)
return true;
}
if (intMonth - 2 == 0) {
var booLeapYear = (intYear % 4 == 0 && (intYear % 100 != 0 || intYear % 400 == 0));
if (((booLeapYear && intDay <= 29) || (!booLeapYear && intDay <= 28)) && intDay != 0)
return true;
}
}
return false;
},
isZip: function(value) {
var validateReg = /^[0-9]{6}$/;
return validateReg.test(value);
},
checkSpecialChar: function(value) {
var validateReg = /([~!@#$%^&*\/\\,.\(\)]){6,16}$/;
return validateReg.test(value);
},
CheckSpecialString: function(value) {
var validateReg = /[\u0000-\u0008\u000B\u000C\u000E-\u001F\uD800-\uDFFF\uFFFE\uFFFF]/;
return validateReg.test(value);
},
isTel: function(s) {
var patrn = /^\d{3,4}-\d{7,8}(-\d{3,4})?$/
if (!patrn.exec(s)) return false
return true
},

isMobile: function(value) {
var validateReg = /^1\d{10}$/;
return validateReg.test(value);
},
getLength: function(value) {
return value.replace(/[^\x00-\xff]/g, "**").length;
},
isLicence: function(value) {
var validateReg = /^[A-Za-z]{10}[0-9]{10}$/;
return validateReg.test(value);
},
isPersonalCard: function(value) {
var validateReg = /(^\d{15}$)|(^\d{17}(\d|[A-Za-z]{1})$)/;
return validateReg.test(value);
},
isOrganizationCodeCard: function(value) {
var validateReg = /^[A-Za-z0-9]{9}$/;
return validateReg.test(value);
},
isBankAccount: function(value) {
var validateReg = /^[1-9]{1}[0-9]*$/;
return validateReg.test(value);
},
MaxLength: function(field, maxlimit) {
var j = field.value.replace(/[^\x00-\xff]/g, "**").length;
var tempString = field.value;
var tt = "";
if (j > maxlimit) {
for (var i = 0; i < maxlimit; i++) {
if (tt.replace(/[^\x00-\xff]/g, "**").length < maxlimit)
tt = tempString.substr(0, i + 1);
else
break;
}
if (tt.replace(/[^\x00-\xff]/g, "**").length > maxlimit) {
tt = tt.substr(0, tt.length - 1);
field.value = tt;
}
else {
field.value = tt;
}
}
}
};

这个类是写了一些验证Email 、身份证号码等等的正则表达式,供我们后面使用,使用方法如下:
代码如下:
validateStringValueForEmail: function(obj, normalMsg, warningMsg) {
var jqueryObj = $(obj);
ValidateHelper.clearMessage(obj);
if (!ValidateHelper.validateStringValueIsEmpty(jqueryObj, "通过", "不能为空")) {
ValidateHelper.warningMessage(jqueryObj, "不能为空");
return false;
}
if (!Validation.isEmail(jqueryObj.val())) {
ValidateHelper.warningMessage(jqueryObj, warningMsg);
return false;
}
else {
ValidateHelper.normalMessage(jqueryObj, normalMsg);
return true;
}
},
validateStringValueForCardID: function(obj, normalMsg, warningMsg) {
var jqueryObj = $(obj);
ValidateHelper.clearMessage(obj);
if (!ValidateHelper.validateStringValueIsEmpty(jqueryObj, "通过", "不能为空")) {
ValidateHelper.warningMessage(jqueryObj, "不能为空");
return false;
}
if (!Validation.isPersonalCard(jqueryObj.val())) {
ValidateHelper.warningMessage(jqueryObj, warningMsg);
return false;
}
else {
ValidateHelper.normalMessage(jqueryObj, normalMsg);
return true;
}
},

那到这边是基本可以处理我们的一般的js验证了,可以试试以后用在自己的框架上,我们把自己调试的源码附上:
ASPX :
代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="FormValidateModuleEx._Default" %>






<%----%>













  • <%--IdCardValidate($(this),'身份证的格式不正确');--%>










  • js:
    代码如下:
    var Validation = {
    textCount: function(field, counter, maxLimit) {
    var message = $(field).val();
    if ($(field).val().length > maxLimit)
    $(field).val(message.substring(0, maxLimit))
    //$(counter).text(maxLimit-field.value.length);
    },
    refreshValidator: function(img, input) {
    $(img).attr('src', $(img).attr('src') + "&r=" + Math.random());
    $(input).focus();
    },
    isUrl: function(s) {
    var strRegex =
    /^((http(s)?|ftp|telnet|news|rtsp|mms):\/\/)?(((\w(\-*\w)*\.)+[a-zA-Z]{2,4})|(((1\d\d|2([0-4]\d|5[0-5])|[1-9]\d|\d).){3}(1\d\d|2([0-4]\d|5[0-5])|[1-9]\d|\d).?))(:\d{0,5})?(\/+.*)*$/;
    return strRegex.test(s);
    },
    isDecimal: function(d) { var pattern = /^(([1-9]\d{0,12})|0)(\.\d{1,2})?$/; return pattern.test(d); },
    isEmail: function(s) {
    var pattern = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
    return pattern.test(s);
    },
    isLowEmail: function(s) {
    var b, e;
    b = s.indexOf("@");
    e = s.indexOf(".");
    if (b <= 0) return false;
    if (e < 0 || e == (s.length - 1)) { return false; }
    return true;
    },
    clearNoNum: function(event, obj) {
    event = window.event || event;
    if (event.keyCode == 37 | event.keyCode == 39) {
    return;
    }
    obj.value = obj.value.replace(/[^\d.]/g, "");
    obj.value = obj.value.replace(/^\./g, "");
    obj.value = obj.value.replace(/\.{2,}/g, ".");
    obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
    },
    checkNum: function(obj) {
    obj.value = obj.value.replace(/\.$/g, "");
    },
    isInteger: function(value) {
    var integerReg = new RegExp(/^\d+$/);
    return integerReg.test(value);
    },
    isValidateReg: function(value) {
    var validateReg = /^([A-Za-z0-9\s\-\_\~\!\@\#\$\%\^\&\*\(\)\|\<\>\?\:\;\"\'\.\[\]\{\}\,\+\`\/\\\=]){6,16}$/;
    if (validateReg.test(value)) {
    return true;
    }
    return false;
    },
    isDate: function(strValue) {
    var objRegExp = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/

    if (!objRegExp.test(strValue))
    return false;
    else {
    var arrayDate = strValue.split(RegExp.$1);
    var intDay = parseInt(arrayDate[2], 10);
    var intYear = parseInt(arrayDate[0], 10);
    var intMonth = parseInt(arrayDate[1], 10);
    if (intMonth > 12 || intMonth < 1) {
    return false;
    }
    var arrayLookup = { '1': 31, '3': 31, '4': 30, '5': 31, '6': 30, '7': 31,
    '8': 31, '9': 30, '10': 31, '11': 30, '12': 31
    }
    if (arrayLookup[parseInt(arrayDate[1])] != null) {
    if (intDay <= arrayLookup[parseInt(arrayDate[1])] && intDay != 0)
    return true;
    }
    if (intMonth - 2 == 0) {
    var booLeapYear = (intYear % 4 == 0 && (intYear % 100 != 0 || intYear % 400 == 0));
    if (((booLeapYear && intDay <= 29) || (!booLeapYear && intDay <= 28)) && intDay != 0)
    return true;
    }
    }
    return false;
    },
    isZip: function(value) {
    var validateReg = /^[0-9]{6}$/;
    return validateReg.test(value);
    },
    checkSpecialChar: function(value) {
    var validateReg = /([~!@#$%^&*\/\\,.\(\)]){6,16}$/;
    return validateReg.test(value);
    },
    CheckSpecialString: function(value) {
    var validateReg = /[\u0000-\u0008\u000B\u000C\u000E-\u001F\uD800-\uDFFF\uFFFE\uFFFF]/;
    return validateReg.test(value);
    },
    isTel: function(s) {
    var patrn = /^\d{3,4}-\d{7,8}(-\d{3,4})?$/
    if (!patrn.exec(s)) return false
    return true
    },

    isMobile: function(value) {
    var validateReg = /^1\d{10}$/;
    return validateReg.test(value);
    },
    getLength: function(value) {
    return value.replace(/[^\x00-\xff]/g, "**").length;
    },
    isLicence: function(value) {
    var validateReg = /^[A-Za-z]{10}[0-9]{10}$/;
    return validateReg.test(value);
    },
    isPersonalCard: function(value) {
    var validateReg = /(^\d{15}$)|(^\d{17}(\d|[A-Za-z]{1})$)/;
    return validateReg.test(value);
    },
    isOrganizationCodeCard: function(value) {
    var validateReg = /^[A-Za-z0-9]{9}$/;
    return validateReg.test(value);
    },
    isBankAccount: function(value) {
    var validateReg = /^[1-9]{1}[0-9]*$/;
    return validateReg.test(value);
    },
    MaxLength: function(field, maxlimit) {
    var j = field.value.replace(/[^\x00-\xff]/g, "**").length;
    var tempString = field.value;
    var tt = "";
    if (j > maxlimit) {
    for (var i = 0; i < maxlimit; i++) {
    if (tt.replace(/[^\x00-\xff]/g, "**").length < maxlimit)
    tt = tempString.substr(0, i + 1);
    else
    break;
    }
    if (tt.replace(/[^\x00-\xff]/g, "**").length > maxlimit) {
    tt = tt.substr(0, tt.length - 1);
    field.value = tt;
    }
    else {
    field.value = tt;
    }
    }
    }
    };


    var ValidateHelper = {
    validateStringValueIsEmpty: function(obj, normalMsg, warningMsg) {
    var jqueryObj = $(obj);
    ValidateHelper.clearMessage(obj);
    if ($.trim(jqueryObj.val()).length == 0) {
    ValidateHelper.warningMessage(jqueryObj, warningMsg);
    return false;
    }
    else {
    ValidateHelper.normalMessage(jqueryObj, normalMsg);
    return true;
    }
    },
    validateStringValueForEmail: function(obj, normalMsg, warningMsg) {
    var jqueryObj = $(obj);
    ValidateHelper.clearMessage(obj);
    if (!ValidateHelper.validateStringValueIsEmpty(jqueryObj, "通过", "不能为空")) {
    ValidateHelper.warningMessage(jqueryObj, "不能为空");
    return false;
    }
    if (!Validation.isEmail(jqueryObj.val())) {
    ValidateHelper.warningMessage(jqueryObj, warningMsg);
    return false;
    }
    else {
    ValidateHelper.normalMessage(jqueryObj, normalMsg);
    return true;
    }
    },
    validateStringValueForCardID: function(obj, normalMsg, warningMsg) {
    var jqueryObj = $(obj);
    ValidateHelper.clearMessage(obj);
    if (!ValidateHelper.validateStringValueIsEmpty(jqueryObj, "通过", "不能为空")) {
    ValidateHelper.warningMessage(jqueryObj, "不能为空");
    return false;
    }
    if (!Validation.isPersonalCard(jqueryObj.val())) {
    ValidateHelper.warningMessage(jqueryObj, warningMsg);
    return false;
    }
    else {
    ValidateHelper.normalMessage(jqueryObj, normalMsg);
    return true;
    }
    },
    normalMessage: function(jqueryObj, msg) {
    var emObj = $(jqueryObj.parent().find('em')[0]);
    emObj.empty().append(msg);
    },
    warningMessage: function(jqueryObj, msg) {
    ValidateHelper.clearMessage(jqueryObj);
    var emObj = $(jqueryObj.parent().find('em')[0]);
    var spanElement = ""
    + msg
    + "";
    emObj.empty().append(spanElement);

    },
    clearMessage: function(jqueryObj) {
    var emObj = $(jqueryObj.parent().find('em')[0]);
    emObj.empty();
    },
    initInfo: function() {

    var userName = $('#email');
    var userPwd = $('#setPwd');
    if (!ValidateHelper.validateStringValueIsEmpty(userName, '通过', '不能为空')) {
    userName.focus();
    return null;
    }
    if (!ValidateHelper.validateStringValueIsEmpty(userPwd, '通过', '不能为空')) {
    userPwd.focus();
    return null;
    }

    var userInfo = {
    UserName: userName.val(),
    UserPwd: userPwd.val()
    };

    return userInfo;
    },

    post: function() {

    var userInfo = ValidateHelper.initInfo();
    if (userInfo == null) {
    return;
    }

    $.ajax({
    type: "post",
    dataType: "text",
    url: "Ajax/Module.aspx",
    timeout: 30000,
    data: { UserName: userInfo.UserName, UserPwd: userInfo.UserPwd },
    success: function(data) {
    alert(data.toString());
    }
    });
    }
    }

    文档

    js验证模型自我实现的具体方法_javascript技巧

    js验证模型自我实现的具体方法_javascript技巧:市面上有很多表单验证的框架,教我们怎么验证表单的数据提交,说实话也真的很简单,但是我们会有一种感觉我们要是离开了这些框架的时候,我们有时候会束手无策,然后js验证写的很不规范,没有一套比较好的模式,那我写这篇的目的就是:我们自己构建js验证应该
    推荐度:
    标签: 验证 js 具体
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top