这里有新鲜出炉的 Javascript 教程,程序狗速度看过来!
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
这篇文章主要介绍了 JS 表单验证方法, 结合实例形式总结分析了常用的表单验证技巧, 包括电话、身份证号、Email、中文、特殊字符、身份证号等验证方法, 需要的朋友可以参考下
本文实例总结了 JS 表单验证方法。分享给大家供大家参考,具体如下:
回回写表单, 回回要写不同的检查 JS, 很麻烦, 后来写了通用的检查函数, 很粗糙, 但比较实用, 以后再好好改改:
包含页: Check-Form.js
代码如下:
- //规则检查排序
- function RegCheck(objs) {
- var str = objs.checktype;
- switch (str) {
- case "cn":
- //要检查的表单控件的输入类型必须为中文
- return CnWordRegCheck(objs);
- break;
- case "idnum":
- return IdCardRegCheck(objs); //要检查的表单控件的输入类型必须为身份证号
- break;
- case "num":
- //要检查的表单控件的输入类型必须为数字
- return NumRegCheck(objs);
- break;
- case "mail":
- //要检查的表单控件的输入类型必须为EMAIL
- return EmailRegCheck(objs);
- break;
- case "txt":
- //要检查的表单控件的输入类型必须为字符串
- return SpecialWordRegCheck(objs);
- break;
- case "notes":
- return true; //要检查的表单控件的输入类型必须为什么都可以
- break;
- }
- }
- //************************************************
- //检查电话号码
- function NumRegCheck(obj) {
- var uplimit = obj.checkrule.split(",")[0];
- var downlimit = obj.checkrule.split(",")[1];
- var reg = "";
- if (downlimit == null) {
- reg = eval_r("/^[0-9]{" + uplimit + "}$/");
- } else {
- reg = eval_r("/^[0-9]{" + uplimit + "," + downlimit + "}$/");
- }
- var str = obj.value;
- var flag = reg.test(str);
- return flag;
- }
- //************************************************
- //检查身份证号
- function IdCardRegCheck(obj) {
- var str = obj.value;
- var reg = /^([0-9]{15}|[0-9]{18})$/;
- var flag = reg.test(str);
- return flag;
- }
- //************************************************
- //检查EMAIL
- function EmailRegCheck(obj) {
- var str = obj.value;
- var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
- var flag = reg.test(str);
- return flag;
- }
- //***************************************
- //检查中文输入
- function CnWordRegCheck(obj) {
- var str = obj.value;
- var reg = /^[\u4e00-\u9fa5](\s*[\u4e00-\u9fa5])*$/;
- var flag = reg.test(str);
- //alert(flag);
- return flag;
- }
- //***************************************
- //检查特殊字符
- function SpecialWordRegCheck(obj) {
- var reg = /[(\/)(<)(>)]/g ">\\)(')(")( < )( > )] / g;
- var str = obj.value;
- var flag = reg.test(str);
- flag = !flag;
- return flag;
- }
- //************************************************
- //检查主引导函数
- function CheckForm(obj) {
- var myform = eval_r("document." + obj.name);
- for (i = 0; i < myform.elements.length; i++) {
- var formvalue = myform.elements[i].value;
- //内容非空检查,长度检查
- if ((myform.elements[i].value == "") || (myform.elements[i].value.length > myform.elements[i].maxlength)) {
- alert("您忘了填写" + myform.elements[i].cnname + "!" + "或者您填写的信息不符合规范!");
- myform.elements[i].focus();
- return false;
- break;
- }
- if (myform.elements[i].value == 0) {
- alert("您忘了选择" + myform.elements[i].cnname + "!");
- myform.elements[i].focus();
- return false;
- break;
- }
- //数据规范化检查
- var myobj = myform.elements[i];
- //alert(myobj.checktype);
- //break;
- if (!RegCheck(myobj)) {
- alert(myobj.cnname + "输入有误,请按填写要求填写!");
- myobj.focus();
- return false;
- break;
- }
- }
- }
附:js 身份证号码严格验证
- <script>
- function checkIdcard(idcard) {
- var Errors = new Array("验证通过!", "身份证号码位数不对!", "身份证号码出生日期超出范围或含有非法字符!", "身份证号码校验错误!", "身份证地区非法!");
- var area = {
- 11 : "北京",
- 12 : "天津",
- 13 : "河北",
- 14 : "山西",
- 15 : "内蒙古",
- 21 : "辽宁",
- 22 : "吉林",
- 23 : "黑龙江",
- 31 : "上海",
- 32 : "江苏",
- 33 : "浙江",
- 34 : "安徽",
- 35 : "福建",
- 36 : "江西",
- 37 : "山东",
- 41 : "河南",
- 42 : "湖北",
- 43 : "湖南",
- 44 : "广东",
- 45 : "广西",
- 46 : "海南",
- 50 : "重庆",
- 51 : "四川",
- 52 : "贵州",
- 53 : "云南",
- 54 : "西藏",
- 61 : "陕西",
- 62 : "甘肃",
- 63 : "青海",
- 64 : "宁夏",
- 65 : "新疆",
- 71 : "台湾",
- 81 : "香港",
- 82 : "澳门",
- 91 : "国外"
- }
- var idcard, Y, JYM;
- var S, M;
- var idcard_array = new Array();
- idcard_array = idcard.split("");
- //地区检验
- if (area[parseInt(idcard.substr(0, 2))] == null) return Errors[4];
- //身份号码位数及格式检验
- switch (idcard.length) {
- case 15:
- if ((parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0 || ((parseInt(idcard.substr(6, 2)) + 1900) % 100 == 0 && (parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0)) {
- ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/; //测试出生日期的合法性
- } else {
- ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/; //测试出生日期的合法性
- }
- if (ereg.test(idcard)) return Errors[0];
- else return Errors[2];
- break;
- case 18:
- //18位身份号码检测
- //出生日期的合法性检查
- //闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
- //平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))
- if (parseInt(idcard.substr(6, 4)) % 4 == 0 || (parseInt(idcard.substr(6, 4)) % 100 == 0 && parseInt(idcard.substr(6, 4)) % 4 == 0)) {
- ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/; //闰年出生日期的合法性正则表达式
- } else {
- ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/; //平年出生日期的合法性正则表达式
- }
- if (ereg.test(idcard)) { //测试出生日期的合法性
- //计算校验位
- S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 + parseInt(idcard_array[7]) * 1 + parseInt(idcard_array[8]) * 6 + parseInt(idcard_array[9]) * 3;
- Y = S % 11;
- M = "F";
- JYM = "10X98765432";
- M = JYM.substr(Y, 1); //判断校验位
- if (M == idcard_array[17]) return Errors[0]; //检测ID的校验位
- else return Errors[3];
- } else return Errors[2];
- break;
- default:
- return Errors[1];
- break;
- }
- }
- alert(checkIdcard("220183198808081610"))
- </script>
希望本文所述对大家 JavaScript 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0719/327702.html