acerdcl - 2014/3/25 23:53:33
RT,我想验证注册者的身份信息,网上找了断验证身份证号码的js
<script type="text/javascript">
alert(isIdCardNo("440781197007220512"));
//--身份证号码验证-支持新的带x身份证
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 error;
var varArray = new Array();
var intValue;
var lngProduct = 0;
var intCheckDigit;
var intStrLen = num.length;
var idNumber = num;
// initialize
if ((intStrLen != 15) && (intStrLen != 18)) {
//error = "输入身份证号码长度不对!";
//alert(error);
//frmAddUser.txtIDCard.focus();
return false;
}
// check and set value
for(i=0;i<intStrLen;i++) {
varArray = idNumber.charAt(i);
if ((varArray < '0' || varArray > '9') && (i != 17)) {
//error = "错误的身份证号码!.";
//alert(error);
//frmAddUser.txtIDCard.focus();
return false;
} else if (i < 17) {
varArray = varArray*factorArr;
}
}
if (intStrLen == 18) {
//check date
var date8 = idNumber.substring(6,14);
if (checkDate(date8) == false) {
//error = "身份证中日期信息不正确!.";
//alert(error);
return false;
}
// calculate the sum of the products
for(i=0;i<17;i++) {
lngProduct = lngProduct + varArray;
}
// calculate the check digit
intCheckDigit = 12 - lngProduct % 11;
switch (intCheckDigit) {
case 10:
intCheckDigit = 'X';
break;
case 11:
intCheckDigit = 0;
break;
case 12:
intCheckDigit = 1;
break;
}
// check last digit
if (varArray[17].toUpperCase() != intCheckDigit) {
//error = "身份证效验位错误!...正确为: " + intCheckDigit + ".";
//alert(error);
return false;
}
}
else{ //length is 15
//check date
var date6 = idNumber.substring(6,12);
if (checkDate(date6) == false) {
//alert("身份证日期信息有误!.");
return false;
}
}
//alert ("Correct.");
return true;
}
function checkDate(date)
{
return true;
}
</script>
添加到相应字段更新后,前台输入错误身份证没有提示,正确的也没有通过注册
acerdcl - 2014/3/26 1:23:20
唉弄到凌晨1.30了,也没搞定,想试试在名字文本框中只能输入中文 在js验证中填入 onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))" 脚本之家找的代码,也不行啊,xiyou大神来指点下
acerdcl - 2014/3/26 3:44:33
我用网页实现了身份验证代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<script>
function check(){
//if (j==0) Xb2="男"
// else Xb2="女"
//var Jmsfzh1=Jmsfzh+i;
var Xb2="男";
var Jmsfzh1="Jmsfzh1";
alert(trim(document.all(Jmsfzh1).value));
if (trim(document.all(Jmsfzh1).value)==""){
alert("请输入人员的居民身份证号!");
document.all(Jmsfzh1).focus();
return;
}
else
{
if (Jmsfzhjy(trim(document.all(Jmsfzh1).value),Xb2)=="error1"){
alert("您输入的身份证号不是数字信息!");
document.all(Jmsfzh1).focus();
return;
}
if (Jmsfzhjy(trim(document.all(Jmsfzh1).value),Xb2)=="error2"){
alert("您输入的身份证号位数不正确!");
document.all(Jmsfzh1).focus();
return;
}
if (Jmsfzhjy(trim(document.all(Jmsfzh1).value),Xb2)=="error3"){
alert("您输入的身份证号年份不正确!");
document.all(Jmsfzh1).focus();
return;
}
if (Jmsfzhjy(trim(document.all(Jmsfzh1).value),Xb2)=="error4"){
alert("您输入的身份证号日期不正确!");
document.all(Jmsfzh1).focus();
return;
}
if (Jmsfzhjy(trim(document.all(Jmsfzh1).value),Xb2)=="error5"){
alert("您输入的身份证号性别信息不正确!");
document.all(Jmsfzh1).focus();
return;
}
}
alert("ok");
}
//判断居民身份证号输入是否正确1218
function Jmsfzhjy(strsfzh,xb)
{
var cd=strsfzh.length;
var year=-1;
var month=-1;
var day=-1;
for (kk=0;kk<cd;kk++){
if (strsfzh.charAt(kk)>"9" || strsfzh.charAt(kk)<"0"){
h1="error1";
return h1;
}
}
if (cd!=15&&cd!=18){
h1="error2";
return h1
}
if (cd==15){
s1=strsfzh.substring(0,6);
s2="19"+strsfzh.substring(6,15)+"0";
strsfzh=s1+s2;
}
year=issfzhYearValid(parseInt(strsfzh.substring(6,10)));
if (year==-1){
h1="error3"
return h1
}
month=parseInt(strsfzh.substring(10,12));
day=isDayValid(year,month,parseInt(strsfzh.substring(12,14)));
if (day=="-1"){
h1="error4"
return h1
}
s=strsfzh.substring(16,17);
if ((s%2==0&&xb=="男")||(s%2==1&&xb=="女")){
h1="error5"
return h1
}
}
//判断居民身份证号年份的合法性
function issfzhYearValid(year){
var retyear=year;
if (year==0 || year<1900 ||year>2100) retyear=-1;
return retyear;
}
//判断日期和月份的合法性
function isDayValid(year,month,day){
var retday=day;
if (day<1||day>31||month<1||month>12){
retday=-1;
}
else {
if (day==31&&(month==2||month==4||month==6||month==9||month==11)){
retday=-1;
}
else {
if(month==2&&day>28&&!(day==29&&year%4==0&&(year%100!==0||year%400==0))){
retday=-1
}
}
}
return retday;
}
function trim(string) {
var temp = "";
var temp1="";
string = '' + string;
splitstring = string.split(" ");
for(i = 0; i < splitstring.length; i++)
temp1 += splitstring;
splitstring = temp1.split("?");
for(i = 0; i < splitstring.length; i++)
temp += splitstring;
return temp;
}
</script>
<body>
<input name="Jmsfzh1" id="Jmsfzh1" type="text" value="" onblur="check()">
</body>
</html>
在PA会员字段里js验证里写onblur="check()",把js加入member.js,为什么不行,数据库身份证字段就是Jmsfzh1
acerdcl - 2014/3/26 4:25:15
还有,xiyou 在
http://bbs.pageadmin.net/showtopic-5521.aspx里提到的 onblur="if(this.value=='')alert('请输入内容')" 我写入进去 内容为空时候也不提示输入内容呀
acerdcl - 2014/3/26 9:25:40
大神给看看怎么弄
xiyou - 2014/3/26 9:25:58
进入字段列表,点击一下更新
acerdcl - 2014/3/29 20:20:38
进入字段列表,点击一下更新
xiyou 发表于 2014-3-26 9:25:58 
不是更新的问题,自己研究了下解决了,不知道这个算不算是应该修改的问题,在mem_reg.ascx里有段代码,
| <script type='text/javascript'> |
| | function pa_member_zdycheck(){ |
| | return true; |
| | } |
| | </script> |
用于自定义js,把网上找的js在后台填进去就不一定有效了,还是自己修改这个文件比较好,后台不如只保留<script type='text/javascript'></script>算了