身份证号码的验证没有效果
来源:4-8 编程练习
天青色烟雨蒙
2019-06-18 17:27:48
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
* {
box-sizing: border-box;
}
.main {
width: 800px;
height: 600px;
margin: 0 auto;
background-color: #eee;
}
.top {
height: 40px;
background-color: #3092D1;
line-height: 40px;
color: #fff;
padding-left: 20px;
}
.table {
text-align: center;
}
.table input,
.table select {
width: 200px;
padding: 5px 0;
text-indent: 5px;
}
.table span {
color: red;
padding-left: 10px;
}
.table .submit {
margin-top: 50px;
width: 80px;
height: 40px;
background-color: #3092D1;
border-radius: 5px;
text-align: center;
line-height: 40px;
color: #fff;
outline: 0;
border: 0;
}
</style>
</head>
<body>
<div class="main">
<div class="top">用户注册</div>
<div class="table">
<p>
用户名:<input type="text" class="uname"/>
<span class="uname_info"></span>
</p>
<p>登录密码:<input type="password" class="upwd"/>
<span class="upwd_info"></span>
</p>
<p>
确认密码:<input type="password" class="repwd"/>
<span class="repwd_info"></span>
</p>
<p>
姓名:<input type="text" class="real_name"/>
<span class="real_name_info"></span>
</p>
<p>
性别:<select id="sex">
<option value="male">男</option>
<option value="female">女</option>
</select>
</p>
<p>
身份证号码:<input type="text" class="id_number"/>
<span class="id_number_info"></span>
</p>
<p>
邮箱:<input type="text" class="email"/>
<span class="email_info"></span>
</p>
<p>
手机号码:<input type="text" class="phone"/>
<span class="phone_info"></span>
</p>
<input type="button" class="submit" value="提交"/>
</div>
</div>
<script>
var uname = document.querySelector('.uname');
var upwd = document.querySelector('.upwd');
var repwd = document.querySelector('.repwd');
var real_name = document.querySelector('.real_name');
var id_number = document.querySelector('.id_number');
var email = document.querySelector('.email');
var phone = document.querySelector('.phone');
var submitBtn = document.querySelector('.submit');
var uname_info = document.querySelector('.uname_info');
var upwd_info = document.querySelector('.upwd_info');
var repwd_info = document.querySelector('.repwd_info');
var real_name_info = document.querySelector('.real_name_info');
var id_number_info = document.querySelector('.id_number_info');
var email_info = document.querySelector('.email_info');
var phone_info = document.querySelector('.phone_info');
var patter_uname = /^\w{6,20}$/;
var patter_upwd = /^[^\s]{6,18}$/;
var patter_real_name = /^[\u4e00-\u9fa5]{2,4}$/;
var patter_id_number = /^\d{15,17}(?:\d|x|X)$/;
var patter_email = /^\w+@\w+[\.\w]+$/;
var patter_phone = /^(?:(?:13\d)|(?:147)|(?:15[0,1,2,3,5,6,7,8,9])|(?:18[0,2,5,6,7,8,9]))\d{8}$/;
//用户名
uname.onblur = function () {
if (patter_uname.exec(this.value)) {
uname_info.innerHTML = 'ok';
} else {
uname_info.innerHTML = '6-20位字母、数字或“_”,字母开头';
}
}
//密码
upwd.onblur = function () {
if (patter_upwd.exec(this.value)) {
upwd_info.innerHTML = 'ok';
} else {
upwd_info.innerHTML = '6-18位,数字字母或符号,中间不能有空格';
}
}
//确认密码
repwd.onblur = function () {
if (patter_upwd.test(this.value)) {
if (repwd.value === upwd.value) {
repwd_info.innerHTML = 'ok';
} else {
repwd_info.innerHTML = '两次输入密码不一致';
}
} else {
repwd_info.innerHTML = '请设置密码';
}
}
//姓名
real_name.onblur = function () {
if (patter_real_name.exec(this.value)) {
real_name_info.innerHTML = 'ok';
} else {
real_name_info.innerHTML = '真实姓名为两位到四位的中文';
}
}
//身份证
id_number.onblur = function () {
if (patter_id_number.exec(this.value)) {
id_number_info = 'ok';
} else {
id_number_info = '15位或者18位的数字';
}
}
//邮箱
email.onblur = function () {
if (patter_email.exec(this.value)) {
email_info.innerHTML = 'ok';
} else {
email_info.innerHTML = '邮箱格式不正确';
}
}
//手机号码
phone.onblur = function () {
if (patter_phone.exec(this.value)) {
phone_info.innerHTML = 'ok';
} else {
phone_info.innerHTML = '电话号码不正确';
}
}
// submit
submitBtn.onclick=function(){
uname.onblur();
upwd.onblur();
repwd.onblur();
real_name.onblur();
id_number.onblur();
email.onblur();
phone.onblur();
if(patter_upwd.test(upwd.value)
&& patter_upwd.test(repwd.value)
&& repwd.value===upwd.value
&& patter_real_name.test(real_name.value)
&& patter_id_number.test(id_number.value)
&& patter_email.test(email.value)
&& patter_phone.test(phone.value)){
alert("验证通过");
}else{
alert("验证失败");
}
}
</script>
</body>
</html>2回答
好帮手慕码
2019-06-18
同学你好!
身份证号码验证没有效果的原因是缺少innerHTML

如果帮助到了你 欢迎采纳 祝学习愉快~
好帮手慕夭夭
2019-06-18
你好同学,这是因为身份证后面的提示信息并没有设置innerHTML,如下添加即可:

另外,当提示信息处理之后会把内容挤到前面,如下:

建议如下调整:
给span设置一个宽度,这样即使没有文字,也占一个位置,这样显示的时候,不会再挤前面的内容了:

性别虽然没有提示信息,但也设置一个span给它占位:

给输入框前面的文字加一个标签,如下

设置宽度以及右对齐更好看

祝学习愉快,望采纳。
相似问题