请老师检查并指导优化一下,谢谢
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>表单验证</title>
<style>
*{
margin: 0;
padding: 0;
}
body{
font-family: "Microsoft YaHei,微软雅黑";
}
input:focus{
outline: 1px solid #5caef9;
}
.wrap{
width: 880px;
margin: 20px auto;
}
.wrap .title{
height: 32px;
line-height: 32px;
text-indent: 20px;
background: #0EAAE7;
font-weight: normal;
font-size: 16px;
color: #fff;
}
.wrap .form-box{
background: #eceaea;
}
.wrap .form-box form{
padding-top: 20px;
color: #3a3f58;
margin-left: 120px;
}
.wrap .form-box .item-list{
height: 42px;
line-height: 42px;
margin: 5px 0;
}
.wrap .form-box .item-list:last-child{
text-align: center;
padding-bottom: 30px;
}
.item-list label{
display: inline-block;
width: 100px;
text-align: right;
}
.item-list span.tips{
font-size: 12px;
}
.item-list span.success{
color: #0f9d58;
}
.item-list span.error{
color: #f28e92;
}
.item-list input,.item-list select{
width: 220px;
height: 28px;
margin-left: 15px;
padding-left: 10px;
}
.item-list select{
width: 234px;
}
.submit-btn{
display: block;
width: 100px;
height: 45px;
line-height: 45px;
text-align: center;
margin-left: 160px;
background: #0E8CC6;
border: none;
color: #fff;
margin-top: 30px;
}
</style>
</head>
<body>
<div class="wrap">
<h3 class="title">用户注册</h3>
<div class="form-box">
<form action="#">
<div class="item-list">
<label>用户名:</label>
<input type="text" name="username" data-verify="username" placeholder="">
</div>
<div class="item-list">
<label>登录密码:</label>
<input type="text" name="password" data-verify="password" placeholder="">
</div>
<div class="item-list">
<label>确认密码:</label>
<input type="text" name="confirm_pwd" data-verify="confirm_pwd" placeholder="">
</div>
<div class="item-list">
<label>姓名:</label>
<input type="text" name="surname" data-verify="surname" placeholder="">
</div>
<div class="item-list">
<label>性别:</label>
<select name="sex">
<option value="1">男</option>
<option value="2">女</option>
</select>
</div>
<div class="item-list">
<label>身份证号码:</label>
<input type="text" name="idcard" data-verify="idcard" placeholder="">
</div>
<div class="item-list">
<label>邮箱:</label>
<input type="text" name="email" data-verify="email" placeholder="">
</div>
<div class="item-list">
<label>手机号码:</label>
<input type="text" name="mobile" data-verify="mobile" placeholder="">
</div>
<div class="item-list">
<button type="button" class="submit-btn">提交</button>
</div>
</form>
</div>
</div>
</body>
<script>
var pattern_list = {
username : {
pattern : /^[a-zA-Z][\w\_]{5,19}$/,
fail : '6-20位字母、数字或“_”,字母开头'
},
password : {
pattern : /^\S{6,18}$/,
fail : '密码6-18位,包括数字字母或符号,中间不能有空格'
},
surname : {
pattern : /^[\u4e00-\u9fa5]{2,4}$/,
fail : '真实姓名为两位到四位的中文'
},
idcard : {
pattern : /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
fail : '15位或者18位的身份证号码'
},
email : {
pattern : /^[\w\d\.\-_]+@[a-z0-9]+(\.[a-z]{2,})+$/,
fail : '邮箱格式不正确'
},
mobile : {
pattern : /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/,
fail : '电话号码不正确'
}
};
var eventUnit = {
addHandler: function (element, type, handler) {
if (element.addEventListener) { //主流浏览器兼容写法
element.addEventListener(type, handler, false);
} else if (element.attachEvent) { //ie低版本事件写法
element.attachEvent('on' + type, handler);
} else {
element['on' + type] = handler //dom0级事件绑定
}
},
getTarget: function (event) {
return event.target || event.srcElement;
},
};
function check(obj) {
var value = obj.value;
var verify_name = obj.getAttribute('data-verify');
var span = obj.parentNode.getElementsByClassName('tips')[0];
if(!span){
span = document.createElement("span"); // 创建一个元素节点
span.setAttribute('class','tips');
obj.parentNode.appendChild(span);
}
if(verify_name == 'confirm_pwd'){
if(!value || value != document.getElementsByName('password')[0].value){
span.classList.remove('success');
span.classList.add('error');
span.innerHTML = '两次密码输入不一致';
obj.focus();
}else{
span.classList.add('success');
span.classList.remove('error');
span.innerHTML = 'ok';
}
}else{
if(!pattern_list[verify_name] || pattern_list[verify_name]['pattern'].test(value)){
span.classList.add('success');
span.classList.remove('error');
span.innerHTML = 'ok';
}else{
span.classList.remove('success');
span.classList.add('error');
span.innerHTML = pattern_list[verify_name]['fail'];
obj.focus();
}
}
}
var input_list = document.querySelectorAll('input');
for (var i = 0; i < input_list.length; i ++){
eventUnit.addHandler(input_list[i],'blur',function (e) {
check(this);
})
}
var btn = document.querySelector('button');
eventUnit.addHandler(btn,'click',function (e) {
for (var i = 0; i < input_list.length; i ++){
check(input_list[i]);
}
var error = document.getElementsByClassName('error');
if(error.length == 0){
alert('验证成功');
}
});
</script>
</html>32
收起
正在回答 回答被采纳积分+1
2回答
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星