正則驗證&模態框
在日常生活中,凡是需要表單驗證的都會用到正則驗證.下面拿一個簡單的帶有模態框的正則驗證的小demo看一下
<style>
/* 遮罩層 */
.mask{
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-color: rgba(0,0,0,0.5);
display: none;
/* display: flex; */
/* flex-direction: column; */
justify-content: space-around;
align-items: center;
flex: 1;
}
.con {
width: 450px;
height: 404px;
/* border: 1px solid; */
background-color: #fff;
}
.title {
height:40px;
width: 450px;
color: #db6419;
border-bottom: 3px solid orange;
}
.title p{
text-align: center;
line-height: 40px;
font-weight: 700;
font-size: 18px;
}
.form input {
width: 405px;
height: 30px;
text-indent: 1em;
border-radius: 10px;
border: #8d898a 1px solid;
}
.form input,
p {
margin-top: 0;
margin-left: 25px;
margin-top: 15px;
}
.con button {
width: 114px;
height: 40px;
outline: none;
border: none;
justify-content: space-around;
}
.con p {
font-size: 12px;
color: #8d898a;
}
/* 按鈕 */
.btn{
display: flex;
justify-content: space-around;
cursor: pointer;
}
.btn .close{
background-color: #8b898a;
border-radius: 15px;
}
.btn .login{
background-color: orange;
color: #fff;
border-radius: 15px;
}
</style>
</head>
<body>
<!– 註冊按鈕 –>
<button id=”submitBtn”>註冊</button>
<!– 模態框 –>
<div class=”mask”>
<div class=”con”>
<!– 標題 –>
<div class=”title”>
<p>用戶註冊</p>
</div>
<!– 表單–>
<div class=”form”>
<input class=”username” type=”text” placeholder=”請輸入用戶名”>
<p>中文、字母、數字、下劃線長度2-12位</p>
<input class=”email” type=”email” name=”” id=”” placeholder=”請輸入郵箱”>
<p>有效的郵箱</p>
<input class=”password” type=”password” name=”” id=”” placeholder=”請輸入密碼”>
<p>字母、數字、下劃線長度6-12位</p>
</div>
<!– 按鈕 –>
<div class=”btn”>
<button class=”close”>關閉</button>
<button class=”login”>註冊</button>
</div>
</div>
</div>
<!– 最外層大盒子 –>
<script>
// 獲取元素
let submitBtn = document.querySelector(‘#submitBtn’)
let mask = document.querySelector(‘.mask’)
// 關閉按鈕
let close = document.querySelector(‘.btn .close’)
// 註冊按鈕
let login = document.querySelector(‘.btn .login’)
// 用戶名
let username = document.querySelector(‘.form .username’)
let email = document.querySelector(‘.form .email’)
let password = document.querySelector(‘.form .password’)
let ps = document.querySelectorAll(‘.form p’)
// 正則
let useReg = /^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$/
let emaReg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
let psdReg = /^[a-zA-Z]\w{5,17}$/
// 記錄是否符合正則
let useFlag = false
let emaFlag = false
let psdFlag = false
// 給按鈕註冊點擊事件
submitBtn.addEventListener(‘click’,function(){
mask.style.display = “flex”
})
// 關閉按鈕點擊的時候 關閉模態框
close.addEventListener(‘click’,function(){
mask.style.display=”none”
})
// 遍歷所有的正則驗證的提示文字
ps.forEach(function(p,index){
// 用戶名的input框註冊失焦事件
username.addEventListener(‘blur’,function(){
if(useReg.test(this.value)){
console.log(this.value);
ps[0].style.color=”#8b898a”
useFlag = true
}else{
ps[0].style.color=”red”
console.log(ps[index]);
useFlag = false
}
})
// 郵箱input框的失焦事件
email.addEventListener(‘blur’,function(){
if(emaReg.test(this.value)){
console.log(this.value);
ps[1].style.color=”#8b898a”
emaFlag = true
}else{
ps[1].style.color=”red”
emaFlag = false
}
})
})
// 密碼的input輸入框的失焦事件
password.addEventListener(‘blur’,function(){
if(psdReg.test(this.value)){
ps[2].style.color=”#8b898a”
psdFlag = true
}else{
ps[2].style.color=”red”
psdFlag = false
}
})
//登陸
login.addEventListener(‘click’,function(){
if(useFlag&&emaFlag&&psdFlag){
location.href=’https:www.baidu.com’
}else{
alert(‘請輸入正確的格式’)
}
})
</script>
</body>
</html>