1、一般使用jq比较快,还有很少有人会在判断正确后,焦点聚焦到下个input框的,一般都是手动或者按tab键的
2、验证一般使用正则语法。例如:var patt=/^一-龥a-zA-Z$/g验证中英输入
至于身份证,直接网络上找个验证方法,导入引用即可:
如下实例:
js:
$(function(){
$("#fm").submit(function(e){
var nameObj = $("#g_xingming");
var cardObj = $("#g_shenfenzheng");
if(nameObj.val() == ""){
alert("please enter name");
nameObj.focus();
return false;
}else{
var patt = /^a-zA-Z一-龥$/g;
if(patt.test(nameObj.val())){
alert("not num!not sign!");
nameObj.val("")
nameObj.focus();
return false;
}
}
if(cardObj.val() == ""){
alert("please enter card num");
cardObj.focus();
return false;
}else{
var isc = isIdCardNo(cardObj.val());
if(isc == false){
alert("card num is not legal!");
cardObj.val("");
cardObj.focus();
return false;
}
}
})
});
//增加身份证验证
function isIdCardNo(num) {
var factorArr = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1);
var parityBit = new Array("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2");
var varArray = new Array();
var intValue;
var lngProduct = 0;
var intCheckDigit;
var intStrLen = num.length;
var idNumber = num;
// initialize
if ((intStrLen != 15) && (intStrLen != 18)) {
return false;
}
// check and set value
for (i = 0; i < intStrLen; i++) {
varArray[i] = idNumber.charAt(i);
if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {
return false;
} else if (i < 17) {
varArray[i] = varArray[i] * factorArr[i];
}
}
if (intStrLen == 18) {
//check date
var date8 = idNumber.substring(6, 14);
if (isDate8(date8) == false) {
return false;
}
// calculate the sum of the products
for (i = 0; i < 17; i++) {
lngProduct = lngProduct + varArray[i];
}
// calculate the check digit
intCheckDigit = parityBit[lngProduct % 11];
// check last digit
if (varArray[17] != intCheckDigit) {
return false;
}
}
else { //length is 15
//check date
var date6 = idNumber.substring(6, 12);
if (isDate6(date6) == false) {
return false;
}
}
return true;
}
演示:
姓名:
身份证:
1、引用了Jquery
2、对姓名和身份证进行了空值判断