请老师看下
来源:4-8 编程练习
qq_慕九州2374973
2019-12-18 21:45:47
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
/*清除样式*/
*{
margin:0;
padding:0;
}
body,html{
width:100%;
}
.word{
margin-top: 30px;
display: inline-block;
width: 100px;
height: 20px;
text-align: right;
}
input{
display: inline-block;
text-align: justify-all;
height: 20px;
margin-top: 30px;
margin-left: 6px;
}
/*设置标题样式*/
#header{
width:100%;
height:36px;
background:#1e90ff;
font-size:20px;
line-height:36px;
color:white;
padding-left:10px;
font-family:"微软雅黑",serif;
}
/*设置整体样式*/
#sub{
background:#d3d3d3;
width:100%;
}
#sub1{
width:1200px;
height:800px;
margin:0 auto;
padding-top: 50px;
text-align: center;
}
.button{
display: block;
width: 80px;
height: 40px;
background: red;
color: white;
font-size: 18px;
text-align: center;
border: none;
border-radius: 6px;
margin: 60px auto;
}
.button:hover{
cursor: pointer;
}
.span,.span1,.span2,.span3,.span4,.span5,.span6{
display: inline-block;
width: 200px;
color:red;
margin-left: 6px;
margin-top: 30px;
font-size: 10px;
text-align: left;
}
</style>
</head>
<body>
<div id="main">
<header id="header">用户注册</header>
<section id="sub">
<form action="">
<div id="sub1">
<span class="word">用户名:</span><input type="text" name="userName" placeholder="请输入用户名" class="input"><span class="span"></span><br>
<span class="word">登录密码:</span><input type="password" name="pwd" placeholder="请输入密码" class="input1"><span class="span1"></span><br>
<span class="word">确认密码:</span><input type="password" name="confirmPwd" placeholder="请再次输入密码" class="input2"><span class="span2"></span><br>
<span class="word">姓名:</span><input type="text" name="realName" placeholder="请输入姓名" class="input3"><span class="span3"></span><br>
<span class="word">身份证号码:</span><input type="text" name="id" placeholder="请输入身份证号码" class="input4"><span class="span4"></span><br>
<span class="word">邮箱:</span><input type="text" name="email" placeholder="请输入邮箱" class="input5"><span class="span5"></span><br>
<span class="word">手机号码:</span><input type="text" name="phoneNumber" placeholder="请输入手机号" class="input6"><span class="span6"></span><br>
<input type="button" value="提交" id="button" class="button input7">
</div>
</form>
</section>
</div>
<script type="text/javascript">
(function(){
//获取元素
var wrapElem = document.querySelector("#sub1");
//获取input
var inputsDom = {
//用户名
userNameInput:wrapElem.querySelector(".input"),
//密码
pwdInput:wrapElem.querySelector(".input1"),
//确认密码
confirmPwdInput:wrapElem.querySelector(".input2"),
//姓名
realNameInput:wrapElem.querySelector(".input3"),
//身份证
idInput:wrapElem.querySelector(".input4"),
//邮箱
emailInput:wrapElem.querySelector(".input5"),
//手机号
phoneNumberInput:wrapElem.querySelector(".input6"),
};
//提交按钮
var submitInput = document.querySelector("#button");
//获取span
var spanDom = {
userNameSpan:wrapElem.querySelector(".span"),
pwdSpan:wrapElem.querySelector(".span1"),
confirmPwdSpan:wrapElem.querySelector(".span2"),
realNameSpan:wrapElem.querySelector(".span3"),
idSpan:wrapElem.querySelector(".span4"),
emailSpan:wrapElem.querySelector(".span5"),
phoneNumberSpan:wrapElem.querySelector(".span6")
};
//pattern
var allPattern = {
userNamePattern: /^[a-z]\w{5,19}$/ig,
pwdPattern:/^\S{6,18}$/ig,
confirmPwdPattern:/^\S{6,18}$/ig,
realNamePattern:/^[\u4e00-\u9fa5]{2,4}$/,
idPattern:/^(\d{15}|(\d{17}[\dXx]))$/,
emailPattern:/^\w+([-_.]\w+)*@\w+([-_.]\w+)*\.\w{2,}$/,
phoneNumberPattern:/^(13|15|16|17|18|19)\d{9}$/
};
//得到焦点input value为空的提示
var onfocusBlankTips = {
userNameBlankTips:"请输入您的用户名",
pwdBlankTips:"请输入您的密码",
confirmPwdBlankTips:"请再次输入密码",
realNameBlankTips:"请输入您的姓名",
idBlankTips:"请输入您的身份证号码",
emailBlankTips:"请输入您的邮箱",
phoneNumberBlankTips:"请输入您的电话号码"
};
//失去焦点input value为空的提示
var onblurBlankTips = {
userNameBlankTips:"用户名为空",
pwdBlankTips:"密码为空",
confirmPwdBlankTips:"确认密码为空",
realNameBlankTips:"姓名为空",
idBlankTips:"身份证号码为空",
emailBlankTips:"邮箱为空",
phoneNumberBlankTips:"手机号码为空"
};
//错误提示
var errorTips = {
userNameTips:"6-20位字母、数字或“_”,字母开头",
pwdTips:"6-18位数字字母或符号",
confirmPwdTips:"密码错误",
realNameTips:"2-4位汉字",
idTips:"15或18位身份证号码",
emailTips:"邮箱错误!",
phoneNumberTips:"11位手机号!"
};
//类型,提示字符串
var str = {
strPattern:"Pattern",
strSpan:"Span",
strTips:"Tips",
strBlankTips:"BlankTips",
strFlag:"Flag"
};
//状态标志
var flags = {
userNameFlag:false,
pwdFlag:false,
confirmPwdFlag:false,
realNameFlag:false,
idFlag:false,
emailFlag:false,
phoneNumberFlag:false
};
//颜色字符串
var strColor = {
colorError:"red",
colorBlankOnfocus:"green",
colorBlankOnblur:"#FF8C00",
colorSuccess:"#FF4500"
};
//css类型字符串
var typeCss = {
type1:"color",
// type2:"fontSize"
};
//输出函数
var outPut = {
//输出提示
outPutTipsOrError:function(ele,tip){
return ele.innerHTML = tip;
},
//输出ok
outPutOk:function(elem) {
return elem.innerHTML = "ok";
}
};
//改变css
var change = {
//改变css样式(怎么封装改变多个样式的函数)
changeCssType:function(elem,attr,value){
//elem可能是个数组,也可是个dom对象
if(elem.length){//一组数据设置同一样式
for(var i =0,len = elem.length;i < len;i++){
elem[i].style[attr] = value;
}
return elem;
}
//elem是dom对象
elem.style[attr] = value;
return elem;
}
};
for(var i in inputsDom){
//鼠标获得焦点
inputsDom[i].onfocus = function(){
//输出提示
outPut.outPutTipsOrError(spanDom[this.name + str.strSpan],onfocusBlankTips[this.name + str.strBlankTips]);
// 改变字体颜色
change.changeCssType(spanDom[this.name + str.strSpan],typeCss.type1,strColor.colorBlankOnfocus);
};
//鼠标失去焦点
inputsDom[i].onblur = function(){
// 判断
if(this.value === ""){
//输出空提示
outPut.outPutTipsOrError(spanDom[this.name + str.strSpan], onblurBlankTips[this.name + str.strBlankTips]);
// 改变字体颜色
change.changeCssType(spanDom[this.name + str.strSpan],typeCss.type1,strColor.colorBlankOnblur);
}else {
//判断
if(allPattern[this.name + str.strPattern].exec(this.value)){
//设置状态
flags[this.name + str.strFlag] = true;
//输出提示
outPut.outPutOk(spanDom[this.name + str.strSpan]);
//改变字体颜色
change.changeCssType(spanDom[this.name + str.strSpan], typeCss.type1, strColor.colorSuccess);
}else{
//输出错误提示
outPut.outPutTipsOrError(spanDom[this.name + str.strSpan],errorTips[this.name + str.strTips]);
//改变字体颜色
change.changeCssType(spanDom[this.name + str.strSpan], typeCss.type1, strColor.colorError);
}
}
};
}
// 点击提交按钮(全部input未输入直接点击,怎么显示提示内容)
submitInput.onclick = function () {
for(var j in flags){
if(!flags[j]){
alert("error");
return;
}else{
confirm("确认提交吗");
}
return;
}
};
})();
</script>
</body>
</html>请老师看下还有无可以优化的地方,并请老师帮忙解决注释中的问题
2回答
qwertyuiopl
2019-12-19
兄弟你好厉害呀,看了下你的代码写的太精简了,你提出的其他几个需求都没办法往上加。建议你把它们分开写,这样条理清楚,例如这个:https://class.imooc.com/course/qadetail/161096这样虽然没有你的方法简单,但是胜在条理清晰,其他需求也容易添加。而且听工作朋友说,验证页面的需求一般是不会变化的,所以不会写的忒复杂....
qq_慕九州2374973
提问者
2019-12-18
老师,我还有个想法。重新回到验证成功的的输入框时,提示ok,当作修改时,提示:请输入****;第二次获取鼠标焦点该怎么实现,
相似问题