关于正则的教程,可以查看:正则这个火星文!
学完正则后,可以通过表单登录来练习正则的使用。
点击图片可以查看具体效果。
功能:
1、输入框获得光标时,出现提示要输入数据的格式的tips。
2、用户名要求字母开头,包含字母、数字或下划线,长度在8-16个字符。
3、密码要求大小写字母和数字的组合,长度为8~16个字符。
4、出错,输入框下方会出现错误提示,正确,后面会出现蓝色的小勾图标。
5、都输入正确后,登录按钮可用,有一个错误则不可用。
核心代码如下:
// 1、获得光标的时候,出现提示信息
// 2、失去光标的时候,提示信息消失。
// 3、input,可以验证数据的合法性。验证规则,并且还要验证按钮是否可用。
// 4、如果不合法,出现错误提示信息,如果合法,则出现成功信息
// 5、都合法,提交按钮才可用。
const oUserName = document.querySelector('#user-id');
const oUserPwd = document.querySelector('#user-pwd');
const oBtn = document.querySelector('#btn-login');
const oSuccesssAll = document.querySelectorAll('.success-icons');
// // 字母开头,允许字母数字下划线,长度为8~16个字符
check(oUserName, /^[A-z]\w{7,15}$/);
// // 大小写字母和数字的组合,长度为8~16个字符
check(oUserPwd, /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,16}$/);
function check(obj, r) {
const parent = obj.parentElement;
const oSuccesss = parent.querySelector('.success-icons');
const oTips = parent.querySelector('.tipsbox');
const oErrorTips = parent.querySelector('.error-tips');
// 1、当获得光标的时候,需要出现提示信息
obj.addEventListener('focus', function () {
oTips.classList.remove('none');
})
// 2、失去光标的时候,提示信息消失。
obj.addEventListener('blur', function () {
oTips.classList.add('none');
})
//3、input事件,验证数据的合法性
obj.addEventListener('input', function () {
let val = this.value;
if (r.test(val)) {
oSuccesss.classList.remove('none');
oErrorTips.classList.add('none');
oTips.classList.add('none');
} else {
oSuccesss.classList.add('none');
oErrorTips.classList.remove('none');
oTips.classList.remove('none');
}
// 并且还要验证按钮是否可用
let result = [...oSuccesssAll].every(function (item) {
return !item.classList.contains('none')
})
console.log(result);
if (result) {
oBtn.disabled = false;
} else {
oBtn.disabled = true;
}
})
}
发表评论:
◎请发表你卖萌撒娇或一针见血的评论,严禁小广告。