?? checkform.js
字號:
//主函數
function CheckForm(oForm)
{
var els = oForm.elements;
//遍歷所有表元素
for(var i=0; i<els.length; i++)
{
// 是否需要同一性檢測
if(els[i].accord)
{
for(var j=0; j<els.length; j++)
{
if(j==i) continue;
if(els[i].accord == els[j].name && GetValue(els[i]) == GetValue(els[j]))
break;
}
if(j==els.length)
{
//驗證不通過,彈出提示warning
alert(els[i].warning);
//該表單元素取得焦點,用通用返回函數
GoBack(els[i])
return false;
}
}
//是否需要驗證
else if(els[i].check)
{
//取得驗證的正則字符串
var sReg = els[i].check;
//取得表單的值,用通用取值函數
var sVal = GetValue(els[i]);
if(sVal=="" && els[i].Ignore) continue;
//字符串->正則表達式,不區分大小寫
var reg = new RegExp(sReg,"i");
if(!reg.test(sVal))
{
//驗證不通過,彈出提示warning
alert(els[i].warning);
//該表單元素取得焦點,用通用返回函數
GoBack(els[i])
return false;
}
}
///////////////////////////////////////////////////////////
// 身份證
else if(els[i].checkEx)
{
var param = new Object();
param.date = "1900-1-1"
if( !IsIdCard(GetValue(els[i]), param) )
{
//驗證不通過,彈出提示warning
alert(els[i].warning);
//該表單元素取得焦點,用通用返回函數
GoBack(els[i])
return false;
}
for(var k=0; k<els.length; k++)
{
if(k==i) continue;
if(els[k].name=="Birthday")
{
var DateOne=new Date(GetValue(els[k]).replace(/\-/g, "/"));
var DateTwo=new Date(param.date.replace(/\-/g, "/"));
if( DateOne.getFullYear() == DateTwo.getFullYear() &&
DateOne.getMonth() == DateTwo.getMonth() &&
DateOne.getDay() == DateTwo.getDay())
break;
else
{
alert("身份證號與生日不匹配!");
return false;
}
}
}
}
}
return true;
}
//通用取值函數分三類進行取值
//文本輸入框,直接取值el.value
//單多選,遍歷所有選項取得被選中的個數返回結果"00"表示選中兩個
//單多下拉菜單,遍歷所有選項取得被選中的個數返回結果"0"表示選中一個
function GetValue(el)
{
//取得表單元素的類型
var sType = el.type;
switch(sType)
{
case "text":
case "hidden":
case "password":
case "file":
case "textarea": return el.value;
case "checkbox":
case "radio": return GetValueChoose(el);
case "select-one":
case "select-multiple": return GetValueSel(el);
}
//取得radio,checkbox的選中數,用"0"來表示選中的個數,我們寫正則的時候就可以通過0{1,}來表示選中個數
function GetValueChoose(el)
{
var sValue = "";
//取得第一個元素的name,搜索這個元素組
var tmpels = document.getElementsByName(el.name);
for(var i=0;i<tmpels.length;i++)
{
if(tmpels[i].checked)
{
sValue += "0";
}
}
return sValue;
}
//取得select的選中數,用"0"來表示選中的個數,我們寫正則的時候就可以通過0{1,}來表示選中個數
function GetValueSel(el)
{
var sValue = "";
for(var i=0;i<el.options.length;i++)
{
//單選下拉框提示選項設置為value=""
if(el.options[i].selected && el.options[i].value!="")
{
sValue += "0";
}
}
return sValue;
}
}
//通用返回函數,驗證沒通過返回的效果.分三類進行取值
//文本輸入框,光標定位在文本輸入框的末尾
//單多選,第一選項取得焦點
//單多下拉菜單,取得焦點
function GoBack(el)
{
//取得表單元素的類型
var sType = el.type;
switch(sType)
{
case "text":
case "hidden":
case "password":
case "file":
case "textarea": el.focus();var rng = el.createTextRange(); rng.collapse(false); rng.select();
case "checkbox":
case "radio": var els = document.getElementsByName(el.name);els[0].focus();
case "select-one":
case "select-multiple":el.focus();
}
}
function IsIdCard(number, param)
{
var date, Ai;
var verify = "10x98765432";
var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
var area = ['','','','','','','','','','','','北京','天津','河北','山西','內蒙古','','','','','','遼寧','吉林','黑龍江','','','','','','','','上海','江蘇','浙江','安微','福建','江西','山東','','','','河南','湖北','湖南','廣東','廣西','海南','','','','重慶','四川','貴州','云南','西藏','','','','','','','陜西','甘肅','青海','寧夏','新疆','','','','','','臺灣','','','','','','','','','','香港','澳門','','','','','','','','','國外'];
var re = number.match(/^(\d{2})\d{4}(((\d{2})(\d{2})(\d{2})(\d{3}))|((\d{4})(\d{2})(\d{2})(\d{3}[x\d])))$/i);
if(re == null) return false;
if(re[1] >= area.length || area[re[1]] == "") return false;
if(re[2].length == 12)
{
Ai = number.substr(0, 17);
date = [re[9], re[10], re[11]].join("-");
}
else
{
Ai = number.substr(0, 6) + "19" + number.substr(6);
date = ["19" + re[4], re[5], re[6]].join("-");
}
if(!IsDate(date, "ymd")) return false;
param.date = date
var sum = 0;
for(var i = 0;i<=16;i++)
{
sum += Ai.charAt(i) * Wi[i];
}
Ai += verify.charAt(sum%11);
return (number.length ==15 || number.length == 18 && number == Ai);
}
function IsDate(op, formatString)
{
formatString = formatString || "ymd";
var m, year, month, day;
switch(formatString)
{
case "ymd" :
m = op.match(new RegExp("^((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})$"));
if(m == null ) return false;
day = m[6];
month = m[5]*1;
year = (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10));
break;
case "dmy" :
m = op.match(new RegExp("^(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))$"));
if(m == null ) return false;
day = m[1];
month = m[3]*1;
year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10));
break;
default :
break;
}
if(!parseInt(month)) return false;
month = month==0 ?12:month;
var date = new Date(year, month-1, day);
return (typeof(date) == "object" && year == date.getFullYear() && month == (date.getMonth()+1) && day == date.getDate());
}
function GetFullYear(y)
{
return ((y<30 ? "20" : "19") + y)|0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -