老师帮忙看下代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>账号注册</title>
<style>
*{
margin: 0;
padding: 0;
}
.formContent{
width: 1000px;
margin: 0 auto;
font-size: 18px;
background: #ccc;
}
.title{
background: #4f81c7;
color: #fff;
padding-left:18px;
line-height: 36px;
height: 36px;
}
.formMain{
width: 500px;
text-align: center;
margin-top: 18px;
margin-left: 50px;
height: 446px;
}
.formMain form{
color: #757575;
text-align: right;
}
.formMain .info{
margin: 18px auto;
}
.formMain .info input{
width: 150px;
}
.formMain .info select{
width: 150px;
}
.formMain .info .star{
color: #f00;
position: absolute;
/* display: none; */
}
.formMain .btn{
background-color: #4f81c7;
font-size: 20px;
width: 80px;
height: 40px;
line-height: 40px;
color: #fff;
border: 1px solid #757575;
border-radius: 5px;
}
</style>
</head>
<body>
<div class="formContent">
<p class="title">用户注册</p>
<div class="formMain">
<form action="">
<p class="info">
用户名:<input type="text" id="username"><span class="star">*</span>
</p>
<p class="info">
登录密码:<input type="text" id="password"><span class="star">*</span>
</p>
<p class="info">
确定密码:<input type="text" id="conPwd"><span class="star">*</span>
</p>
<p class="info">
姓名:<input type="text" id="name"><span class="star">*</span>
</p>
<p class="info">
性别:<select name="sex" id="sex">
<option value="boy">男</option>
<option value="girl">女</option>
<option value="hide">隐藏</option>
</select>
</p>
<p class="info">
身份证号码:<input type="text" id="userId"><span class="star">*</span>
</p>
<p class="info">
邮箱:<input type="text" id="email"><span class="star">*</span>
</p>
<p class="info">
手机号:<input type="text" id="phone"><span class="star">*</span>
</p>
<button type="submit" class="btn" id="btn">提交</button>
</form>
</div>
</div>
<script>
// 获取元素
var getElem = function( selector ){
return document.querySelector(selector);
}
var mainElem = {
username:getElem("#username"),
password:getElem("#password"),
conPwd:getElem("#conPwd"),
name:getElem("#name"),
userId:getElem("#userId"),
email:getElem("#email"),
phone:getElem("#phone"),
btn:getElem('#btn'),
inputs:document.getElementsByTagName("input"),
stars:document.getElementsByClassName('star')
};
// 正则表达式
var pattern = {
username:/^[a-zA-Z]\w{5,19}$/,
password:/^\S{6,18}$/,
conPwd:/^\S{6,18}$/,
name:/^[\u4e00-\u9fa5]{2,4}$/,
userId:/^[1-9]{1}\d{14}$|^[1-9]{1}\d{16}(\d|[xX])$/,
email:/^(?:\w+\.)*(\w+)@(?:\w+\.)+([a-zA-Z])+$/,
phone:/^13\d{9}|147\d{8}$|15[0,1,2,3,5,6,7,8,9]{1}\d{8}$|18[0,2,5,6,7,8,9]{1}\d{8}$/
};
// 错误时的提示文本
var error = [
'6-20位字母、数字或“_”,字母开头',
'6-18位,包括数字字母或符号,中间不能有空格',
'请确认密码',
'真实姓名为2-4位中文',
'请输入15或18位的身份证号码',
'邮箱格式不正确,例如2019112@qq.com',
'手机号码格式不正确'
];
mainElem.username.focus();
// 封装一个函数,判断输入的信息是否符合要求
function judge(ele,reg,idx){
var newStar = mainElem.stars[idx];
if(reg.test(ele.value)){
newStar.innerHTML = "OK";
newStar.style.color = "green";
}else{
newStar.innerHTML = error[idx];
newStar.style.color = "red";
}
}
// event对象跨浏览器兼容
var EventUtil = {
addHandler: function(element, type, handler) {
//绑定事件
if(element.addEventListener) {
element.addEventListener(type, handler, false);
} else if(element.attachEvent) {
element.attachEvent("on" + type, handler);
} else {
element["on" + type] = handler
}
}
}
// 验证用户名是否符合要求 6-20位字母、数字或“_”,字母开头
EventUtil.addHandler(mainElem.username,'blur',function(){
return judge(mainElem.username,pattern.username,0);
})
// 验证登录密码是否符合要求 6-18位,包括数字字母或符号,中间不能有空格
EventUtil.addHandler(mainElem.password,'blur',function(){
return judge(mainElem.password,pattern.password,1);
})
// 验证确认密码是否与登录密码一致
EventUtil.addHandler(mainElem.conPwd,'blur',function(){
if(mainElem.password.value !=mainElem.conPwd.value){
mainElem.stars[2].innerHTML = "两次密码不一致";
mainElem.stars[2].style.color = "red";
mainElem.conPwd.focus();
}else{
return judge(mainElem.conPwd,pattern.conPwd,2);
}
})
// 验证姓名是否符合要求 两位到四位的中文
EventUtil.addHandler(mainElem.name,'blur',function(){
return judge(mainElem.name,pattern.name,3);
})
// 验证身份证号码是否符合要求 15位或18位身份证号
EventUtil.addHandler(mainElem.userId,'blur',function(){
return judge(mainElem.userId,pattern.userId,4);
})
// 验证邮箱是否符合要求
EventUtil.addHandler(mainElem.email,'blur',function(){
return judge(mainElem.email,pattern.email,5);
})
// 验证手机号是否符合要求
EventUtil.addHandler(mainElem.phone,'blur',function(){
return judge(mainElem.phone,pattern.phone,6);
})
var list = mainElem.inputs;
// 判断所有输入框是否都符合表达式
function allConfirm(){
var str = list[i].value;
var reg = pattern[list[i].id];
var isResult = true;
for(var i = 0;i < list.length;i++){
isResult = isResult && reg.test(str);
}
return isResult;
}
// 给提交按钮绑定事件
EventUtil.addHandler(mainElem.btn,'click',function(){
var str = list[i].value;
var reg = pattern[list[i].id];
if(allConfirm()){
alert("注册成功!");
}else{
//遍历所有输入框,若不符合正则表达式,则显示错误文字
for(var i=0;i<list.length;i++){
if(!reg.test(str)){
mainElem.stars[i].innerHTML = error[i];
}
}
}
})
</script>
</body>
</html>提交按钮好像有点问题
其他部分代码有没有哪里还需要优化
2
收起
正在回答
2回答
你好同学,解答如下:
1.这个方法在小白入门阶段的《js事件》课程中提到过,不记得没有关系,这次记住就行。
很简单,直接记住event.preventDefault()是阻止元素的默认行为即可哦。
2. 邮箱,电话你可以按照你说的改一改类型,但是不改也没有关系,因为它们与text文本表现形式差不多,都是可见的。在html5 新的类型出现之前,就是使用text类型。但是密码如果是text类型,那么密码就能看到了。

而密码一般是不可见的,这个比较重要,所以老师让你专门改一下密码的类型。

祝学习愉快,望采纳。




恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星