js实现填写身份证号、手机号、准考证号等信息自动空格的效果

  咱们做网站的,用户体验那是相当重要的,比如12306抢票需要填写身份证,如果不空格,密密麻麻的给我一种很压抑的感觉,而且也不容易核对信息是否填写正确,所以我就写了一个利用Js实现填写身份证号、手机号、准考证号等信息自动空格的效果。

为了方便,自已定义的一个简单的get()方法和trim()方法,代码如下:


//获取对应的对象--function函数.
function get(id) {
return document.getElementById(id);
}

//去掉所有空格--String类的属性.
String.prototype.trim = function () {
return this.replace(/\s+/g, "");
};

实例1:身份证号自动空格,支持18位的身份证号码,格式为"xxx xxx xxxx xxxx xxxx".


//身份证自动空格.
function FillIdentity() {
var idNumber = get("IDNumber");//页面上输入身份证号码的文本框的Id.
var idValue = idNumber.value.trim();
if (idValue != "") {
var idLength = idValue.length;
if (idLength <= 3) {
idNumber.value = idValue;
} else {
if (idLength <= 6) {
idNumber.value = idValue.substring(0, 3) + " " + idValue.substring(3, idLength);
} else {
if (idLength <= 10) {
idNumber.value = idValue.substring(0, 3) + " " + idValue.substring(3, 6) + " " + idValue.substring(6, idLength);
} else {
if (idLength <= 14) {
idNumber.value = idValue.substring(0, 3) + " " + idValue.substring(3, 6) + " " + idValue.substring(6, 10) + " " + idValue.substring(10, idLength);
} else {
idNumber.value = idValue.substring(0, 3) + " " + idValue.substring(3, 6) + " " + idValue.substring(6, 10) + " " + idValue.substring(10, 14) + " " + idValue.substring(14, idLength);
}
}
}
}
}
}

实例2:手机号码自动空格,支持11位的手机号码,格式为"xxx xxxx xxxx".


//手机号自动空格.
function FillMobile() {
var mobile = get("Mobile");//页面上输入手机号码的文本框的Id.
var mValue = mobile.value.trim();
if (mValue != "") {
var mLength = mValue.length;
if (mLength <= 3) {
mobile.value = mValue;
} else {
if (mLength <= 7) {
mobile.value = mValue.substring(0, 3) + " " + mValue.substring(3, mLength);
} else {
mobile.value = mValue.substring(0, 3) + " " + mValue.substring(3, 7) + " " + mValue.substring(7, mLength);
}
}
}
}

实例3:准考证号自动空格,没有固定的格式,简单来说就是"四位一空格",格式为"xxxx xxxx xxxx".


//准考证号自动空格.
function FillTicket() {
var ticket = get("Ticket");//页面上输入准考证号的文本框的Id.
var tValue = ticket.value.trim();
if (tValue != "") {
var tLength = tValue.length;
var count = parseInt(tLength / 4);
if (count >= 1) {
ticket.value = "";
for (var i = 1; i <= count; i++) {
ticket.value += tValue.substring((i - 1) * 4, (i) * 4);
if (tLength > (i * 4)) {//不加此判断会出现遇到空格按退格键无效的Bug.
ticket.value += " ";
}
}
ticket.value += tValue.substring(count * 4, tLength);
}
}
}

其他代码:

验证身份证号码是否正确,包括验证出生日期是否合法,校验码是否正确.


//能提示校验码的身份证号码验证方法.
function FillNumber() {
var num = get("IDNumber").value.trim();//页面上输入身份证号码的文本框的Id.
if (num == "") {
alert("请输入身份证号!");
return false;
}
num = num.toUpperCase();
//身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X(身份证上是大写)。
if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {
alert(‘温馨提示:\n\n输入的身份证号长度不对,或者号码不符合规定!\n15位号码应全为数字,18位号码末位可以为数字或X!‘);
return false;
}
//校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
//下面分别分析出生日期和校验位
var len, re;
len = num.length;
if (len == 15) {
if (isNaN(num)) {
alert("15位身份证号码只能为数字!");
return false;
}
re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
var arrSplit = num.match(re);

//检查生日日期是否正确.
var dtmBirth = new Date(‘19‘ + arrSplit[2] + ‘/‘ + arrSplit[3] + ‘/‘ + arrSplit[4]);
var bGoodDay;
bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
if (!bGoodDay) {
alert(‘温馨提示:\n\n您输入的身份证号码里出生日期不对,请确认后重新输入!‘);
return false;
}
else {
//将15位身份证转成18位
//校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array(‘1‘, ‘0‘, ‘X‘, ‘9‘, ‘8‘, ‘7‘, ‘6‘, ‘5‘, ‘4‘, ‘3‘, ‘2‘);
var nTemp = 0, i;
num = num.substr(0, 6) + ‘19‘ + num.substr(6, num.length - 6);
for (i = 0; i < 17; i++) {
nTemp += num.substr(i, 1) * arrInt[i];
}
num += arrCh[nTemp % 11];
alert("当前15位身份证号码正确!");
return num;
}
}
if (len == 18) {
if (isNaN(num.substring(0, 17))) {
alert("身份证号码前17位只能为数字!");
return false;
}
re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
var arrSplit = num.match(re);

//检查生日日期是否正确
var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
var bGoodDay;
bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
if (!bGoodDay) {
//alert(dtmBirth.getYear());
//alert(arrSplit[2]);
alert(‘温馨提示:\n\n您输入的身份证号码里出生日期(‘ + arrSplit[2] + arrSplit[3] + arrSplit[4] + ‘)不对,请确认后重新输入!‘);
return false;
}
else {
if (isNaN(num.substring(17))&&num.substring(17) != "X") {
alert("18位身份证号码的校验码只能为0至9或者字母‘X’");
return false;
}
//检验18位身份证的校验码是否正确。
//校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
var valnum;
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array(‘1‘, ‘0‘, ‘X‘, ‘9‘, ‘8‘, ‘7‘, ‘6‘, ‘5‘, ‘4‘, ‘3‘, ‘2‘);
var nTemp = 0, i;
for (i = 0; i < 17; i++) {
nTemp += num.substr(i, 1) * arrInt[i];
}
valnum = arrCh[nTemp % 11];
if (valnum != num.substr(17, 1)) {
alert(‘温馨提示:\n\n18位身份证的校验码不正确,应该为:‘ + valnum + ",请您确认后重新输入!");
return false;
}
alert("当前18位身份证号码正确!");
return num;
}
}
}

感谢您怀着耐心看完整篇博文!!!
如果文章有什么错误或不当之处,请您斧正!
您有任何意见或者建议,您可以给我发邮件,也可以在下面留言,我看到了会第一时间回复您的,谢谢!

js实现填写身份证号、手机号、准考证号等信息自动空格的效果,布布扣,bubuko.com

时间: 2024-10-21 01:39:00

js实现填写身份证号、手机号、准考证号等信息自动空格的效果的相关文章

NOIP模拟赛 准考证号

准考证号 128M 0.1s ticket.cpp escription 蒟蒻hzwer NOIP2014惨跪,他依稀记得他的准考证号是37,现在hzwer又将要面临一场比赛,他希望准考证号不出现37(连续),同时他又十分讨厌4,所以也不希望4出现在准考证号中...现在他想知道在A和B之间有多少合法的准考证号 Input 包含两个整数,A B Output 一个整数. Sample Input [输入样例一] 1 10 [输入样例二] 25 50 Sample Output [输出样例一] 9

最新手机号码归属地数据库 联通号段 移动号段 电信号段 170号段 手机号段查询 2014年6月 300635条

最新手机号码归属地数据库 每月更新一次移动号段: 134 135 136 137 138 139 147 150 151 152 157 158 159 178 182 183 184 187 188 联通号段:130 131 132 145 155 156 176 185 186 电信号段:133 153 177 180 181 189虚拟运营商:170 2014年6月 300635条 更新历史: 2014-05-01 299920条记录2014-04-01 296010条记录2014-03-

一步一步教你用 Vue.js + Vuex 制作专门收藏微信公众号的 app

一步一步教你用 Vue.js + Vuex 制作专门收藏微信公众号的 app 转载 作者:jrainlau 链接:https://segmentfault.com/a/1190000005844155 项目地址:https://github.com/jrainlau/wechat-subscriptor 下载&运行 git clone git@github.com:jrainlau/wechat-subscriptor.git cd wechat-subscriptor && np

2014.12.13模拟赛【准考证号】

准考证号 128M 0.1s ticket.cpp escription 蒟蒻hzwer NOIP2014惨跪,他依稀记得他的准考证号是37,现在hzwer又将要面临一场比赛,他希望准考证号不出现37(连续),同时他又十分讨厌4,所以也希望4出现在准考证号中...现在他想知道在A和B之间有多少合法的准考证号 Input 包含两个整数,A B Output 一个整数. Sample Input [输入样例一]1 10[输入样例二]25 50 Sample Output [输出样例一]9[输出样例二

订阅号与服务号的主要区别是什么?

1.订阅号与服务号的主要区别是什么? 订阅号每天能群发一条消息,没有自定义菜单及高级接口权限:服务号有自定义菜单及高级接口权限,但每月只能群发一条消息. 2.到底该申请订阅号还是服务号? 申请哪种类型的公众账号,主要取决于账号的用途.服务号主要面向企业和组织,旨在为用户提供服务:订阅号主要面向媒体和个人,旨在为用户提供信息和资讯. 3.订阅号是否支持编程开发? 不管是订阅号,还是服务号,在高级功能中都有编辑模式和开发模式,订阅号也支持编程开发,同样也能与企业系统对接. 4.为什么申请的公众账号没

陈松松:新注册视频平台帐号,养号30天执行方法

每个视频,都是你的金牌业务员 这是我写的第18篇视频营销原创文章 与其搜索十年,不如花一年的时间学习,去赚9年的高薪! 规则更新块,视频流量越来越精准 现在视频平台规则更新越来越块! 原来大家都可以批量帐号操作视频营销,现在很难行得通了. 想要上传视频,必须验证手机号,而且现在手机号必须实名,并且每个人最多是5个手机号,想要批量操作,难度比以前大的太多了,可想,在其他细节方面,那就更严格了. 所以,现在操作视频营销就不能以前那种吊儿郎当的心态去操作,必须根据视频平台现有规则,用最好的方法,你才能

微信公众平台开发教程-关于申请微信公众号订阅号(服务号)的材料和流程

微信公众号服务号与订阅号的区别 订阅号: 1.每天可以发1次信息,每次可以发送8篇文章(信息展示在微信公众号折叠文件中) 2.不能申请微信支付功能 3.认证后才可以使用自定义菜单功能 4.订阅号适合:不需要支付功能,以为用户提供咨询信息的企业. 服务号: 1.每月可以发4次信息,每次可以发送8篇文章(信息直接展示微信聊天框中) 2.可以申请微信支付功能 3.无论是否认证都可使用自定义菜单功能 4.服务号适合:需要开通支付功能的企业. 微信公众号申请注册用户需提供以下材料: ①企业营业执照 ②对公

微信公众号 订阅号与服务号的区别

1. 说明 微信公众平台有4类账号:订阅号.服务号.企业号及小程序. 订阅号和服务号统称为公众号. 2. 区别 2.1 主要区别 订阅号的注册主体可以为个人,但现在已关闭个人认证.服务号的注册主体不能为个人. 表:主要区别 说明 订阅号 服务号 账号说明 偏于为用户传达资讯(类似报纸杂志) 偏于服务交互(类似银行,114,提供服务查询) 注册主体 政府.媒体.企业.其他组织.个人 政府.媒体.企业.其他组织 消息显示位置 显示在对话列表内的[订阅号]里 直接显示在对话列表内 群发消息上限 每天有

云展网教程 | 微信杂志分享公众号以及订阅号方法

目前微信公众平台只支持图文推送,在后台的"图文消息"里添加的正文内容,仅支持插入图片.腾讯视频.微视以及投票,以及添加"原文链接",不能嵌入代码,也不能在正文内容添加链接,也就是说我们不能把做好的微杂志以链接的形式放在正文供用户点击浏览,也不能像网页一样将微杂志直接嵌入微信后台,那么我们如何在微信上发布电子杂志呢? (下列4种方法适用于公众号以及订阅号两种类型,均以云展网为案例) 方法一: 发布图文消息+原文链接 每一期的微杂志为一个图文消息,添加微杂志的URL为原