|
|
Posted on
2006-09-12 16:30
胖在一方
阅读( 429)
评论()
收藏
举报
<!--
//-------------------------------------------
// 函数名: ChkSFZMHM(txtObj)
// 参数说明: 身份证号码所在的TextBox
// 函数说明: 检测是否是正确的身份证号码
// 返回值说明: True 正确的身份证号码
// False 错误的身份证号码
//Creater:Stpangpang 2004-10-13
//--------------------------------------------
function ChkSFZMHM(txtObj)
  {
var txt=document.getElementById(txtObj);
var str=txt.value;
var birthday
//判断身份证明号码的长度

if (str.length!=15 && str.length!=18)
 {
alert('身份证明号码位数不正确,请确认!');
txt.select();
txt.focus();
return false;
}
else if (str.length==15)
 {
birthday='19' + str.substr(6,6)
if (!ChkData(birthday))
 {
alert('身份证明号码中出生日期不正确,请确认');
txt.select();
txt.focus();
return false;
}
//判断15位是否全部是数字
 if (!/^\d {15}$/.test(str))
 {
alert('身份证明号码中有非法字符,请确认!')
txt.select();
txt.focus();
return false;
}
}
else if (str.length==18)
 {
birthday=str.substr(6,8)
if (!ChkData(birthday))
 {
alert('身份证明号码中出生日期不正确,请确认');
txt.select();
txt.focus();
return false;
}
var SFZMHM1 =str.substr(0,17);
var SFZMHM2=str.substr(17,1);
//判断前17位是否是数字
//var reg=new RegExp("[^\d{18}|\d{17]}X$]");
 if (!/^\d {17}$/.test(SFZMHM1))
 {
alert('身份证明号码中有非法字符,请确认!')
txt.select();
txt.focus();
return false;
}
//判断身份证明号码的校验位
var vCode =VerifyCode(str);
if (SFZMHM2.toUpperCase() != vCode)
 {
alert('身份证明号码中的校验位错误-----应该为 ' + vCode + ' 实际为 ' + SFZMHM2);
txt.select();
txt.focus();
return false;
}
}
return true;
}

//-------------------------------------------
// 函数名: VerifyCode(hm)
// 参数说明: 要计算的身份证号码

// 函数说明: 计算传入18位身份证的校验码
// 返回值说明: 返回校验码

// Creater: Stpangpang 2004-10-13
//--------------------------------------------
function VerifyCode(hm)
  {
var w=new Array();
var ll_sum;
var ll_i;
var ls_check;
w[0]=7;
w[1]=9;
w[2]=10;
w[3]=5;
w[4]=8;
w[5]=4;
w[6]=2;
w[7]=1;
w[8]=6;
w[9]=3;
w[10]=7;
w[11]=9;
w[12]=10;
w[13]=5;
w[14]=8;
w[15]=4;
w[16]=2;
ll_sum=0;
for (ll_i=0;ll_i<=16;ll_i++)
 {
ll_sum=ll_sum+(hm.substr(ll_i,1)-0)*w[ll_i];
}
ll_sum=ll_sum % 11;
switch (ll_sum)
 {
case 0 :
ls_check="1";
break;
case 1 :
ls_check="0";
break;
case 2 :
ls_check="X";
break;
case 3 :
ls_check="9";
break;
case 4 :
ls_check="8";
break;
case 5 :
ls_check="7";
break;
case 6 :
ls_check="6";
break;
case 7 :
ls_check="5";
break;
case 8 :
ls_check="4";
break;
case 9 :
ls_check="3";
break;
case 10 :
ls_check="2";
break;
}
return ls_check //返回18位身份证的校验码
}

function ChkDataPlus(txtObj,allowNull)
  {
var txt=document.getElementById(txtObj);
var str=txt.value;
if (allowNull && !ChkData(str))
 {
alert('日期有错误,请检查!');
txt.select();
txt.focus();
return false ;
}
return true;
}

//-------------------------------------------
// 函数名: ChkData(str)
// 函数说明: 判断传入的日期是否是正确的日期格式

// 参数说明: 日期字符串可以是8位或10位

// 返回值说明: True 是正确的日期格式
// False 是错误的日期格式
// Creater:Stpangpang 2004-10-13
//--------------------------------------------

function ChkData(str)
  {
if (str.length==8)
 {
str=str.substr(0,4) + '-' + str.substr(4,2) + '-' + str.substr(6,2);
//alert(str);
}
 var r = str.match(/^(\d {1,4})(-|\/)(\d {1,2})\2(\d {1,2})$/);
if(r==null) return false;
var d= new Date(r[1], r[3]-1, r[4]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
}


//-------------------------------------------
// 函数名: Trim(str)
// 函数说明: 将字符串前后的空格去除

// 参数说明: str 传入日期格式的字符串
// 返回值说明: 返回去除空格的字符串
// Creater:Stpangpang 2004-10-13
//--------------------------------------------
function Trim(str)
  {
return str.replace(/(^\s*)|(\s*$)/g,"");
}



//---------------------------------------------------------------------------
// 函数名: ChkLength(str)
// 数说明 : 验证输入的字符串是否超过了指定的长度(一个汉字为2个长度)
// 参数说明 : str 传入日期格式的字符串
// length 限制的字符串长度
// 返回值说明 :True 字符串没有超过指定的长度
// False 字符串超过了指定的长度

// Creater:Stpangpang 2004-10-13
//--------------------------------------------------------------------------
function ChkLength(str,length)
  {
str=str.replace(/[^\x00-\xff]/g,"**");
if (str.length >length ) return false;
return true;
}

//-------------------------------
//函数名:Enter2Tab()
//参数 :无
//说明 :将文本框中的回车键转换成Tab键

//Creater:Stpangpang 2004-10-13
//-------------------------------
function Enter2Tab()
  {
if ((window.event.srcElement.type=="text" || window.event.srcElement.type=="select-one" || window.event.srcElement.type=="checkbox") && window.event.keyCode==13)
 {
window.event.keyCode=9;
}
}

//-------------------------------
//函数名:IsNumeric(txt)
//参数 :txt
//说明 :检查输入的是否是数字(针对于记分分值)
//Creater:Stpangpang 2004-10-13
//-------------------------------
function IsNumeric(txt)
  {
 if (!/^(0|[1-9]\d {0,})$/.test(txt))
return false;
return true;
}

//--------------------------------
//函数名 Is15Numeric(txt)
//参数 txt
//说明 检查输入的是否是合法的15的数字

//Creater Stpangpang 2004/11/15 16:42
//------------------------------------
function Is15Numeric(txt)
  {
 if(!/^\d {15}$/.test(txt))
return false;
return true;
}

//-------------------------------
//函数名:CompareDate(txtDate1,txtDate2)
//参数 :要比较的2个日期字符串
//说明 :比较2个日期的大小
//返回值: > 0 ====> txtDate1 > txtDate2
// = 0 ====> txtDate1 = txtDate2
// < 0 ====> txtDate1 < txtDate2
//Creater:Stpangpang 2004-10-13
//-------------------------------
function CompareDate(txtDate1,txtDate2)
  {
try
 {
//2004-08-09 的格式不认,但是 2004/08/09 可以正确识别 如果需要,可以增加将 "." 到 "/" 的转换

return(new Date(txtDate1.replace(/-/g,"/")) -new Date(txtDate2.replace(/-/g,"/")));
}
catch(e)
 {
return null;
}
}

//-------------------------------
//函数名:ChkZJCX(txtZJCX)
//参数 :准驾车型代码

//说明 :检测是否是标准的准驾车型代码

//返回值: 非法的准驾车型代码 ("" 表示全是标准的准驾车型代码)
//
//Creater:Stpangpang 2004-10-13
//-------------------------------
function ChkZJCX(txtZJCX)
  {
return txtZJCX.replace(/A1|A2|A3|B1|B2|C1|C2|C3|C4|D|E|F|M|N|P/g,"");
}

//--------------------------------------------------
//函数名:ID15To18(zjhm)
//参数 :15位的证件号码
//说明 :将15位的身份证号码转换为18位的身份证号码

//返回值: 18位的身份证号码

//
//----------------------------------------------------
function ID15To18(zjhm)
  {
var strJiaoYan =new Array("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2");
var intQuan =new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1);
var ll_sum=0;
var i;
var ls_check;
zjhm = zjhm.substring(0, 6) + "19" + zjhm.substring(6);
 for (i=0;i<=16;i++) {
ll_sum=ll_sum+(parseFloat(zjhm.substr(i,1)))*intQuan[i];
}
ll_sum = ll_sum % 11;
zjhm=zjhm + strJiaoYan[ll_sum];
return zjhm;
}
//--------------------------------------------------
//Creater Stpangpang 2004/11/09 13:38
//函数名:ConvertKeyCode
//将小键盘的ASCII码转换

//
//--------------------------------------------------
function ConvertKeyCode(keyCode)
 {
if (keyCode <96 || keyCode>105)
return keyCode
return (parseInt(keyCode,10)-48)
}


//--------------------------------------------------
//函数名:AutoSelectHPZL
//Creater Stpangpang 2004/11/09 13:38
//根据用户键入的数字,自动显示响应的号牌种类

//参数说明:SelectHPZL - Select 的名字(一般是号牌种类DropDownList.ClientID)
//-------------------------------------------------
var keyDown=0; //保存击键的次数

var saveKey=""; //保存用户键入的值

function AutoSelectHPZL(SelectHPZL)
 {
//非数字退出

if ((window.event.keyCode<46 || window.event.keyCode>55) && (window.event.keyCode <96 || window.event.keyCode>105))
 {
return false;
}
//keyDown ++ ; //键入的次数增加

if(++keyDown>2) //如果键入的次数超过2次就退出because Select的Value的值就2位

 {
keyDown=0;
saveKey="";
return false;
}
if(keyDown==1) //保存第一次键入的值

 {
saveKey=String.fromCharCode(ConvertKeyCode(window.event.keyCode));
return false;
}
else if(keyDown==2) //保存第二次的值

 {
saveKey=saveKey + String.fromCharCode(ConvertKeyCode(window.event.keyCode));
var sel =document.getElementById(SelectHPZL);
sel.value=saveKey;
keyDown=0; //清空键入次数
saveKey=""; //清空保存的键值

}
}

//------------------------------------
// Author : Stpangpang
// Created : 2005-08-29
// Purpose : 检测身份证明号码
// ReturnValue : 返回错误信息
//-------------------------------------
function CheckSFZMHM_v2(txtSFZMHM)
  {
//如果是15位
if(txtSFZMHM.length==15)
 {
//先判断是否是15位数字
var re=/[0-9]/g;
var s;
s=txtSFZMHM.replace(re,"")
if(s!="")
 {
return '身份证明号码中含有非法字符' + s ;
}
//判断15位身份证明号码的日期是否正确
var b = '19' + txtSFZMHM.substr(6,6)
if (!ChkData(b))
 {
return "身份证明号码中日期错误";
}
return "" ;
}
//如果是18位的证明号码
else if(txtSFZMHM.length==18)
 {
//先判断前17位身份证明号码是否为数字
var re=/[0-9]/g;
var s;
s=txtSFZMHM.substr(0,17).replace(re,"")
if(s!="")
 {
return '身份证明号码中含有非法字符' + s ;
}
//判断日期是否正确
var b2=txtSFZMHM.substr(6,8);
if (!ChkData(b2))
 {
return "身份证明号码中日期错误";
}
//判断身份证明号码的校验位
var SFZMHM2=txtSFZMHM.substr(17,1);
var vCode =VerifyCode(txtSFZMHM.substr(0,17));
if (SFZMHM2.toUpperCase() != vCode)
 {
return '身份证明号码中的校验位错误-----应该为 ' + vCode + ' 实际为 ' + SFZMHM2 ;
}
return "" ;
}
else
 {
return "身份证明号码位数不正确,应该为15位或者18位,实际为长度为" + txtSFZMHM.length + '位';
}
}
//-->


|