javascript把15位身份证转成18的函数

javascript把15位身份证转成18

var v = new Array();
var vs = "10X98765432";
var newCardID = "";
function onload()
{
document.getElementById("cardID").focus();
}
function checkCardID(cardID15)
{
v.push(2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4, 8, 5, 10, 9, 7);
var cardID = cardID15.value;
if(cardID.length!=15)
{
alert("请输入15位你的身份证号码!");
cardID15.focus();
return;
}
var month = cardID.substring(8,10);//获得15位号码中的月份
if(!checkMonth(month))
{
alert("你输入的身份证格式不正确,月份填写错误!")
cardID15.focus();
return;
}
var year = "19" + cardID.substring(6,8);
var day = cardID.substring(10,12);
if(!checkDay(year,month,day))
{
alert("你输入的身份证的个格式不正确,日期格填写错误");
cardID15.focus();
return;
}
//alert(checkDay(year,month,day));
//将15位的号码转换位17位
var cardID17 = cardID.substring(0,6)+"19"+cardID.substring(6);
var N = 0;
var R = -1;
var T = '0';//储存最后一个数字
var j = 0;
var cardID18="";
//计数出第18位数字
for (var i = 16; i >= 0; i--)
{
N += parseInt(cardID17.substring(i, i + 1)) * v[j];
j++;
}
R = N % 11;
T = vs.charAt(R);
cardID18 = cardID17 + T;
document.getElementById("cardID18").value=cardID18;
newCardID = cardID18;
}
//判断输入的月份是否正确
function checkMonth(month)
{
if(month12)
{
return false;
}
return true;
}
/**
**检查你输入的天数是否正确
**yean为年
**month为月
**day为日
**/
function checkDay(year,month,day)
{
var Mday = 0;
if(day31)
{
return false;
}
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
Mday = 31;
}
if(month==4||month==6||month==9||month==11)
{
Mday = 30;
}
if(month==2)
{
Mday = isLeapYear(year);
}
if(day>Mday)
{
return false;
}
return true;
}
//判断你输入的年是否位闰年
function isLeapYear(year)
{
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0) ? 29 : 28;
}
function checkNewCardID()
{
alert("18位身份证号码为:"+newCardID);
}

15位号码:

18位号码:

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

(0)

相关推荐

  • 15/18位身份证号码验证的正则表达式总结(详细版)

    前言 开发过程中,常常需要对一些输入信息进行有效性验证,使用正则表达式进行校验是最简单.效率最高的方式了,下面就来看看15/18位身份证号码验证的正则表达式吧. 介绍 xxxxxx yyyy MM dd 375 0     十八位 xxxxxx    yy MM dd   75 0     十五位 地区: [1-9]\d{5} 年的前两位: (18|19|([23]\d))            1800-2399 年的后两位: \d{2} 月份: ((0[1-9])|(10|11|12)) 天

  • javascript 身份证号码验证函数(可辨真伪,支持15或18位身份证号)测试误差为0

    //验证身份证号方法 var test=function(idcard){ var Errors=new Array("验证通过!","身份证号码位数不对!","身份证号码出生日期超出范围或含有非法字符!","身份证号码校验错误!","身份证地区非法!"); var area={11:"北京",12:"天津",13:"河北",14:"山西

  • C#小程序15位转18位身份证号代码

    现在我们使用的都是18位身份证号,而以前都是15位身份证号,而如何将15位身份证号转18位身份证号转换为18位身份证号呢? 1.首先,在15位身份证的第6位之后加上"19"变为17位,即出生年月的年加上19,比如原来的92年就变为1992 2.然后,就是最后一位的计算,方法如下: 1)将1得到的17位身份证号,每一位乘以相应的系数,17位系数为{ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 } 2)将(1)求得17个数相加求和

  • 将15位身份证补全为18位身份证的算法示例详解

    前言 最近在参与一个银行项目-某银行安防系统-反洗钱需求的开发,银行项目的离不开身份证号码,身份证号码作为我国公民的唯一标识,有这非同寻常的意义,由于业务的要求15位的身份证号码无法命中,所以需要补全为18位,一开始自己想着加个年份的前两位,后面再加个X不就行了嘛,后来代码写不下去了,上网查了资料,才知道自己想的是多么天真,还是比较复杂的,折腾了一下午终于有了眉目. 一.15位身份证和18位身份证号码结构介绍 要进行身份证号码的验证,首先需要了解我国身份证号码的编码规则.我国身份证号码多由若干位

  • 15位和18位身份证JS校验的简单实例

    一.身份证号码的结构和表示形式 1.号码的结构 根据[中华人民共和国国家标准GB11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 2.地址码 表示编码对象常住户口所在县(市.旗.区)的行政区划代码,按GB/T2260的规定执行. 3.出生日期码 表示编码对象出生的年.月.日,按GB/T7408的规定执行,年.月.日代码之间不用分隔符. 4.顺序

  • js身份证判断方法支持15位和18位

    复制代码 代码如下: //HTML页面上要有一个id为identity_card的input输入框,一个id为ipmessage的身份证错误或正确时提示消息的地方 <script> //身份证验证 $(document).ready(function(){ $("#identity_card").change(function(){ var idcard =$(this).val(); checkDate(idcard ); }); }); //身份证 function c

  • javascript把15位身份证转成18的函数

    javascript把15位身份证转成18 var v = new Array(); var vs = "10X98765432"; var newCardID = ""; function onload() { document.getElementById("cardID").focus(); } function checkCardID(cardID15) { v.push(2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2,

  • Java根据身份证号计算年龄,15位身份证号码转18位原理与操作示例

    本文实例讲述了Java根据身份证号计算年龄,15位身份证号码转18位.分享给大家供大家参考,具体如下: 第一代身份证:15位身份证号码的意义 15位身份证号码各位的含义: 1-2位省.自治区.直辖市代码: 3-4位地级市.盟.自治州代码: 5-6位县.县级市.区代码: 7-12位出生年月日,比如670401代表1967年4月1日,这是和18位号码的第一个区别: 13-15位为顺序号,其中15位男为单数,女为双数: 与18位身份证号的第二个区别:没有最后一位的校验码. 举例: 130503 670

  • PHP实现15位身份证号转18位的方法分析

    本文实例讲述了PHP实现15位身份证号转18位的方法.分享给大家供大家参考,具体如下: 第一代身份证:15位身份证号码的意义 1-2位省.自治区.直辖市代码: 3-4位地级市.盟.自治州代码: 5-6位县.县级市.区代码: 7-12位出生年月日,比如670401代表1967年4月1日,这是和18位号码的第一个区别: 13-15位为顺序号,其中15位男为单数,女为双数: 与18位身份证号的第二个区别:没有最后一位的校验码. 第二代身份证:18位身份证号码的意义 ①前1.2位数字表示:所在省份的代码

  • JavaScript保留两位小数的2个自定义函数

    对于一些小数点后有多位的浮点数,我们可能只需要保留2位,但js没有提供这样直接的函数,所以我们得自己写函数实现这个功能,代码如下: 复制代码 代码如下: function changeTwoDecimal(x) {    var f_x = parseFloat(x);    if (isNaN(f_x)) {        alert('function:changeTwoDecimal->parameter error');        return false;    }    var

  • PHP校验15位和18位身份证号的类封装

    新公司框架源码的时候,发现了这个功能,于是搜索一番并封装了一下身份证号校验的类. 目前大家的身份证号大多是 18 位的,当然,也不排除有些老人的身份证号是 15 位的. 如果强制要求是 18 位的话,会比较好,因为 15 位的身份证号没有校验码,可以说,只要了解大概结构,随手都可以造出一系列身份证号码来. 当然,如果只是单纯的程序校验, 18 位的身份证号码也可以伪造,就是需要伪造者花点心思. 最好的还是调用相关部门给的接口,进行校验. 本文所编写的身份证号码校验,只是针对相关规则下的计算,是调

  • vbscript和javascript版的15位, 18位的身份证号码的验证函数.以及根据身份证取省份,生日,性别

    工作中需要用到身份证验证,还要支持检查15位和18位. 我一时手懒,问同事有没有现成的函数可用,同事google了一下,扔给我一个 asp-vbscript版本的函数.可我这边是客户端javascript呀,于是用改 vbs-->js 改完发现蛮好用的,同时发现 vbscript真的很啰嗦,居然写了50多行,我改成js 只用了11行. 当然,我并完全是指vbscript啰嗦,那个写这段vbs代码的无名氏也是个唐僧性格..... 先放出 vbscript代码,    复制代码 代码如下: <sc

随机推荐