您的位置:首页 > Web前端 > JQuery

JS+JQuery常见验证方法

2014-01-07 11:58 225 查看
仅供参考

1. 验证邮箱 传入id值 页面另外有id+msg的无内容空id,用于显示错误信息

function checkEmail(id){
var temp = $("#"+id)
var myreg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;
if(!myreg.test(temp.val()))
{
$("#"+id+"msg").html("电子邮箱格式错误");
$("#"+id).addClass("inputBorder");
return false;
}else {
$("#"+id+"msg").html("");
$("#"+id).removeClass("inputBorder");
return true;
}
}


2. 验证身份证号码 传入输入控件id值

//TODO 身份证号码校验 START
function IDCard_validate(id){
var inputStr = trim($("input[name='" + id + "']").val());
var inputPro = "身份证号";
if (inputStr == null)
inputStr = "";
var format = inputStr.length;

if (!this.is0AndPosInteger(inputStr)) {
$('input[name="'+ id +'"]').addClass('errorItem');
$.messager.alert('提示', inputPro + "输入不合法!");
return false;
}

if (inputStr == "")
return true;
if ((format == 18) && (!this.checkCheckStr(inputStr))) {
$('input[name="'+ id +'"]').addClass('errorItem');
return false;
}
if (format == 15 || format == 18) {
if (!this.checkID(inputStr, inputPro, format)) {
$('input[name="'+ id +'"]').addClass('errorItem');
return false;
}
} else {
$('input[name="'+ id +'"]').addClass('errorItem');
$.messager.alert('提示', "身份证号码的位数输入不正确!");
return false;
}
$('input[name="'+ id +'"]').removeClass('errorItem');
return true;
}

/**
* (二代身份证最后一位)是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。
* 为确保身份证为18位,Ⅹ是罗马数字的10,用X来代替10,可以保证公民的身份证符合国家标准。
* 身份证第18位(校验码)的计算方法:
* 1、将前面的身份证号码17位数分别乘以不同的系数。
*    从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
* 2、将这17位数字和系数相乘的结果相加。
* 3、用加出来和除以11,看余数是多少?
* 4、余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身
*    份证的号码为1-0-X-9-8-7-6-5-4-3-2 。
* 5、通过上面得知如果余数是2,身份证的最后一位号码就是罗马数字X。如果余数是10,就会在身份证的第18位数字上出现的是2。
* 例如:某男性的身份证号码是34052419800101001X。我们要看看这个身份证是不是合法的身份证。
* 首先我们得出前17位的乘积和是189,然后用189除以11得出的结果是17+2/11,也就是说其余数是2。
* 最后通过对应规则就可以知道余数2对应的是罗马数字X。所以,可以判定这是一个合格的身份证号码。
**/
function checkCheckStr(inputstr){
var i = (inputstr.substr(0, 1) * 7 + inputstr.substr(1, 1) * 9
+ inputstr.substr(2, 1) * 10 + inputstr.substr(3, 1) * 5
+ inputstr.substr(4, 1) * 8 + inputstr.substr(5, 1) * 4
+ inputstr.substr(6, 1) * 2 + inputstr.substr(7, 1) * 1
+ inputstr.substr(8, 1) * 6 + inputstr.substr(9, 1) * 3
+ inputstr.substr(10, 1) * 7 + inputstr.substr(11, 1) * 9
+ inputstr.substr(12, 1) * 10 + inputstr.substr(13, 1) * 5
+ inputstr.substr(14, 1) * 8 + inputstr.substr(15, 1) * 4
+ inputstr.substr(16, 1)* 2) % 11;
var last = 0;
if (i == 10)
last = 2;
if (i > 2 && i < 10)
last = 12 - i;

if (i == 2)
last = "X";
if (i < 2)
last = 1 - i;
if (inputstr.substr(17, 1) == last) {
return true;
} else {
// 身份证号码输入不合法!校验位错误!
$.messager.alert('提示', "身份证号码输入不合法!");
return false;
}
}

function is0AndPosInteger(inputVal) {
var format = inputVal.length;
if (format == 18) {
var lastChar = inputVal.charAt(inputVal.length - 1)
if (lastChar == "X")
inputVal = inputVal.substring(0, inputVal.length - 1);
}
for (var i = 0; i < inputVal.length; i++) {
var oneChar = inputVal.charAt(i)
if (oneChar < "0" || oneChar > "9") {
return false;
}
}
return true;
}

//校验18位身份证的7-14位或者15位身份证的7-12位的年月日是否正确
function checkID(inputStr,objName,format){
if (this.isValidUserID(inputStr)) {
var temp;
var year, month, day;
if (inputStr.length != format) {
$.messager.alert('提示', objName + "格式不对,应为“" + format + "”位。");
return false;
} else {

if (format == 18) {

temp = inputStr.substring(6, 10);
year = parseInt(temp, 10);
if (year < 1900 || year > 2200) {
$.messager.alert('提示', objName + "年份应介于1900与2200之间,请重新输入!");
return false;
}

} else if (format == 15) {
temp = inputStr.substring(6, 8);
year = parseInt(temp, 10);
if (year < 00 || year > 99) {
$.messager.alert('提示', objName + "年份应介于00与99之间,请重新输入!");
return false;
}
}

if (format == 18)
temp = inputStr.substring(10, 12);
else if (format == 15)
temp = inputStr.substring(8, 10);

month = parseInt(temp, 10);
if (month < 1 || month > 12) {
$.messager.alert('提示', objName + "月份必须介于1与12之间!");
return false;
}

if (format == 18)
temp = inputStr.substring(12, 14);
else if (format == 15)
temp = inputStr.substring(10, 12);

day = parseInt(temp, 10);
if ((day == 0) || (day > 31)) {
$.messager.alert('提示', objName + "日必须介于0与31之间!");
return false;
} else if (day > 28 && day < 31) {
if (month == 2) {
if (day != 29) {
$.messager.alert('提示', objName + year + "年" + month + "月无" + day + "日。");
return false;
} else {
if ((year % 4) != 0) {
$.messager.alert('提示', objName + year + "年" + month + "月无" + day + "日。");
return false;
} else {
if ((year % 100 == 0) && (year % 400 != 0)) {
$.messager.alert('提示', objName + year + "年" + month + "月无" + day + "日。");
return false;
}
}
}
}
} else if (day == 31) {
if ((month == 2) || (month == 4) || (month == 6) || (month == 9) || (month == 11)) {
$.messager.alert('提示', objName + month + "月无" + day + "日");
return false;
}
}
}
return true;
} else {
$.messager.alert('提示', "身份证应为数字和字母的组合");
return false;
}
}

//判断是否身份ID,过滤特殊符号
function isValidUserID(checkStr) {
var checkOK = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
var allValid = true;
for (i = 0; i < checkStr.length; i++) {
ch = checkStr.charAt(i);
for (j = 0; j < checkOK.length; j++)
if (ch == checkOK.charAt(j))
break;
if (j == checkOK.length) {
allValid = false;
break;
}
}
return allValid;
}
//TODO 公民身份证号校验 END


3. 验证是否汉字 name表示控件名称,可以为中文,英文等等 ,id 表示控件id

function checkHanzi(name, id) {
var str = document.getElementById(id).value.replace(/(^\s*)|(\s*$)/g, "");
if (str.match(/[^\u4E00-\u9FA5]/g)) {
$.messager.alert('提示',name + "的值应该是汉字!");
document.getElementById(id).style.backgroundColor = color;
document.getElementById(id).focus();
return false;
} else {
document.getElementById(id).style.backgroundColor = '';
}
return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: