经典的JS问题,麻烦各位光顾一下 这个很简单啊,你固定取出身份证的某几位作为出生日期,固定几位为省份。出生日期是文本字段,可以直接显示;省份就对document.all.provide[i]进行循环判断,如果value等于身份证中的省份号码,就置为选中状态。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 翻译了一下做的一个C#项目的验证代码,本机调试通过<script>function check(obj){ if(document.getElementsByName('card')[0].value=='1'&&(obj.value.length==15||obj.value.length==18)) { var a=CheckCidInfo(obj.value); document.getElementsByName('iden')[0].value=a[1]; for(var i=0;i<document.getElementsByName('provide').options.length;i++) { if(document.getElementsByName('provide').options[i].text==a[0]) document.getElementsByName('provide').options[i].selected=true; } } else { alert((obj.value.length==15||obj.value==17)); }}function CheckCidInfo(cid){var arr=new Array(3);if(cid.length ==15){ cid=Card15To18(cid);}var aCity = new Array(null,null,null,null,null,null,null,null,null,null,null,"北京","天津","河北","山西","内蒙古",null,null,null,null,null,"辽宁","吉林","黑龙江",null,null,null,null,null,null,null,"上海","江苏","浙江","安微","福建","江西","山东",null,null,null,"河南","湖北","湖南","广东","广西","海南",null,null,null,"重庆","四川","贵州","云南","西藏",null,null,null,null,null,null,"陕西","甘肃","青海","宁夏","新疆",null,null,null,null,null,"台湾",null,null,null,null,null,null,null,null,null,"香港","澳门",null,null,null,null,null,null,null,null,"国外");var iSum=0; //验证身份证号码是否是18位数字组成if(!(/^\d{17}(\d|x)$/.test(cid))){ return "身份证号码不正确,请重新输入";} cid = cid.toLowerCase();cid = cid.replace(/x/g,'a');//验证身份证号码地区部分是否正确if(aCity[parseInt(cid.substring(0,2))]==null){ return "身份证号码地区部分不正确";}arr[0]=aCity[parseInt(cid.substring(0,2))]; //地区 arr[1]=cid.substring(6,10)+"-"+cid.substring(10,12)+"-"+cid.substring(12,14); //对身份证号码进行校验for(var i=17;i>=0;i--){ iSum +=(Math.pow(2,i)%11)*parseInt(cid.charAt(17-i).toString(),16);}if(iSum%11!=1)return "非法证号"; //判断身份证号码是否与性别相符 1 男 0 女var cidSex=(parseInt(cid.substring(16,17))%2==1?"1":"0");arr[2]=cidSex;return arr;}function Card15To18(oldidcard){var wi = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);var ch = new Array('1','0','X','9','8','7','6','5','4','3','2');var newidcard = '';newidcard = oldidcard.substring(0,6)+"19"+oldidcard.substring(6,15); //插入"19"到原串中,生成17位串var aw = 0;// 计算 ∑(ai×wi)for (var i =0; i<=16; i++) { aw += parseInt(newidcard.charAt(i).toString()) * wi[i];}aw = aw % 11;newidcard += ch[aw]; //查表添加最后一位return newidcard;}</script><form action=""> 身份证:<select name=card> <option value="1">身份证</option> <option value="2">护照</option> </select> 证件号码:<input type=text name='card_num' onblur="check(this)"> 出生日期:<input type=text name=iden> 省份:<select name=provide> <option value="1100">北京</option> <option value="2200">上海</option> </select></form> insertRow() 设置事件 页面无效果 求助! 请教跨域调用js方法,在线等谢谢 把html段落用正则转换成数组的方法 一道面试题 没分了,请去另一贴子看看吧,谢谢各位,关于响应Active控件事件的问题 BMP图片处理问题 table 转 div 输出结果??? 求Julian和calendar(yyyy-mm-dd)日期互转 Javascript调用内部函数也需要用对象名? JQ 层 动画的 小问题 请教高手 如何用javascript取得这个值 windows 98 下的打印分页
function check(obj)
{
if(document.getElementsByName('card')[0].value=='1'&&(obj.value.length==15||obj.value.length==18))
{
var a=CheckCidInfo(obj.value);
document.getElementsByName('iden')[0].value=a[1];
for(var i=0;i<document.getElementsByName('provide').options.length;i++)
{
if(document.getElementsByName('provide').options[i].text==a[0])
document.getElementsByName('provide').options[i].selected=true;
}
}
else
{
alert((obj.value.length==15||obj.value==17));
}
}
function CheckCidInfo(cid)
{
var arr=new Array(3);
if(cid.length ==15)
{
cid=Card15To18(cid);
}
var aCity = new Array(null,null,null,null,null,null,null,null,null,null,null,"北京","天津","河北","山西","内蒙古",null,null,null,null,null,"辽宁","吉林","黑龙江",null,null,null,null,null,null,null,"上海","江苏","浙江","安微","福建","江西","山东",null,null,null,"河南","湖北","湖南","广东","广西","海南",null,null,null,"重庆","四川","贵州","云南","西藏",null,null,null,null,null,null,"陕西","甘肃","青海","宁夏","新疆",null,null,null,null,null,"台湾",null,null,null,null,null,null,null,null,null,"香港","澳门",null,null,null,null,null,null,null,null,"国外");
var iSum=0;
//验证身份证号码是否是18位数字组成
if(!(/^\d{17}(\d|x)$/.test(cid)))
{
return "身份证号码不正确,请重新输入";
}
cid = cid.toLowerCase();
cid = cid.replace(/x/g,'a');//验证身份证号码地区部分是否正确
if(aCity[parseInt(cid.substring(0,2))]==null)
{
return "身份证号码地区部分不正确";
}
arr[0]=aCity[parseInt(cid.substring(0,2))]; //地区
arr[1]=cid.substring(6,10)+"-"+cid.substring(10,12)+"-"+cid.substring(12,14);
//对身份证号码进行校验
for(var i=17;i>=0;i--)
{
iSum +=(Math.pow(2,i)%11)*parseInt(cid.charAt(17-i).toString(),16);
}
if(iSum%11!=1)
return "非法证号";
//判断身份证号码是否与性别相符 1 男 0 女
var cidSex=(parseInt(cid.substring(16,17))%2==1?"1":"0");
arr[2]=cidSex;return arr;
}function Card15To18(oldidcard)
{
var wi = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
var ch = new Array('1','0','X','9','8','7','6','5','4','3','2');
var newidcard = '';
newidcard = oldidcard.substring(0,6)+"19"+oldidcard.substring(6,15); //插入"19"到原串中,生成17位串
var aw = 0;// 计算 ∑(ai×wi)
for (var i =0; i<=16; i++)
{
aw += parseInt(newidcard.charAt(i).toString()) * wi[i];
}aw = aw % 11;
newidcard += ch[aw]; //查表添加最后一位
return newidcard;}
</script>
<form action="">
身份证:<select name=card>
<option value="1">身份证</option>
<option value="2">护照</option>
</select>
证件号码:<input type=text name='card_num' onblur="check(this)">
出生日期:<input type=text name=iden>
省份:<select name=provide>
<option value="1100">北京</option>
<option value="2200">上海</option>
</select>
</form>