- 表单
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
span {
color: red;
}
</style>
</head>
<body>
<form action="">
用户名<input type="text">
<span></span><br />
邮箱<input type="text">
<span></span><br />
密码<input type="text">
<span></span><br />
确认密码 <input type="text">
<span></span><br />
手机号<input type="text">
<span></span>
<br>
身份证<input type="text">
<span></span>
<br>
邮政编码<input type="text">
<span></span>
<br>
<!-- 文件格式监测<input type="text">
<span></span>
<br> -->
字符串首尾去空格。<input type="text">
<span></span>
<br>
汉字<input type="text">
<span></span>
<br>
最大,最小值<input type="text">
<span></span>
<br>
最短,最长值<input type="text">
<span></span>
<br>
<input type="button" value="提交" id="btn">
<span></span>
<br>
</form>
<script>
/* 思路:1.先在body里建几个input表单
2.先设定一开始未输入是不合法的
let isUserName = false;
let isMail = false;
let isPassword = false;
let isConfirmPassword = false;
3.获取提交按钮和和输入框的选择器
4.获取输入框的值,用正则去判断
let str = ipts[0].value;
console.log(str)
let userNameReg = /^[a-z0-9]{1,18}$/
5.判断测试是否通过并显示对应结果
6.循环第四五步
7.判断按钮能否被点击*/
// 先设定一开始未输入是不合法的
let isUserName = false;
let isMail = false;
let isPassword = false;
let isConfirmPassword = false;
let isTel = false;
let isId = false;
let isPostalcode = false;
/* let isImg = false; */
let isString = false;
let isChinese = false;
let isMin = false;
let isLength = false;
// 获取元素
let btn = document.querySelector('#btn');
let ipts = document.querySelectorAll('input');
// 用户名
ipts[0].oninput = function () {
//获取输入框的值 用正则去判断
let str = this.value;
console.log(str)
// 只能以字母开头,6-16位数字和下划线组成
let Reg = /^[A-z]\w{6,16}$/;
// 判断输入框的值,假设正确,那么
// 判断是否匹配正则的值,若配,则布尔值为true
if (Reg.test(this.value)) {
isUserName = true;
// body里的span用来显示下列的提示文字
this.nextElementSibling.innerHTML = ' *格式正确 '
} else {
isUserName = false;
// 不对则显示下列提示
this.nextElementSibling.innerHTML = ' *只能以字母开头,6-16位数字和下划线组成 '
}
//设置用户名不能为空
check()//效果等于isNull()
}
// 邮箱
ipts[1].oninput = function () {
//获取输入框的值 用正则去判断
let str = this.value;
console.log(str)
let mailReg = /^\w+[-+.]*\w*@([a-z0-9A-Z\u2E80-\u9FFF]-?)+(\.\w{2,6})+/
if (mailReg.test(str)) {
// 测试通过
isMail = true
this.nextElementSibling.innerHTML = ' *格式正确  '
} else {
// 测试不通过
isMail = false
this.nextElementSibling.innerHTML = ' *请输入规则的电子邮箱  '
}
console.log(isMail)
check()
}
// 密码
ipts[2].oninput = function () {
//获取输入框的值 用正则去判断
let str = this.value;
console.log(str)
let pdReg = /^.{6,}$/
if (pdReg.test(str)) {
// 测试通过
isPassword = true
this.nextElementSibling.innerHTML = ' *格式正确  '
} else {
// 测试不通过
isPassword = false
this.nextElementSibling.innerHTML = ' *除了换行符之外的6-16位字符 '
}
console.log(isPassword)
check()
}
// 确认密码
ipts[3].oninput = function () {
//获取输入框的值 用正则去判断
let str = this.value;
console.log(str)
let cpdReg = /^.{6,}$/
// 设置现在的值等于上一个密码的值
if (cpdReg.test(str) && this.value == ipts[2].value) {
// 测试通过
isConfirmPassword = true
this.nextElementSibling.innerHTML = ' *格式正确  '
} else {
// 测试不通过
isConfirmPassword = false
this.nextElementSibling.innerHTML = ' *两次密码输入不一致 '
}
console.log(isConfirmPassword)
check()
}
// 手机号
ipts[4].oninput = function () {
let str = this.value;
console.log(str)
let Reg = /^1[345789]\d{9}$/;
if (Reg.test(this.value)) {
isTel = true;
this.nextElementSibling.innerHTML = ' *格式正确 ';
} else {
isTel = false;
this.nextElementSibling.innerHTML = ' *请输入有效的手机号码 ';
}
// 手机号不能为空
check();
};
// 身份证号
ipts[5].oninput = function () {
let str = this.value;
console.log(str)
let Reg = /^\d{17}(\d|x)$/;
if (Reg.test(this.value)) {
isId = true;
this.nextElementSibling.innerHTML = ' 格式正确 ';
} else {
isId = false;
this.nextElementSibling.innerHTML = ' 请输入有效的身份证号 ';
}
check();
};
// 邮政编码检测
ipts[6].oninput = function () {
let str = this.value;
console.log(str)
let Reg = /^\d{6}$/
if (Reg.test(this.value)) {
isPostalcode = true;
this.nextElementSibling.innerHTML = ' 格式正确 ';
} else {
isPostalcode = false;
this.nextElementSibling.innerHTML = ' 请输入有效的邮政编码号 ';
}
check();
};
// 字符串首尾去空格。
ipts[7].oninput = function () {
let str = this.value;
console.log(str)
let Reg = /^\s+|\s+$/g;
if (Reg.test(this.value)) {
isString = true;
this.nextElementSibling.innerHTML = ' *格式正确 ';
} else {
isString = false;
this.nextElementSibling.innerHTML = ' 请输入有效的字符串号 ';
}
check();
};
/* 中文监测
unicode编码中文监测*/
ipts[8].oninput = function () {
let str = this.value;
console.log(str)
let Reg = /^[\u2E80-\u9FFF]+$/
if (Reg.test(this.value)) {
isChinese = true;
this.nextElementSibling.innerHTML = ' *格式正确 ';
} else {
isChinese = false;
this.nextElementSibling.innerHTML = ' 请输入汉字 ';
}
check();
};
// 最大,最小值
ipts[9].oninput = function () {
// this value原来是个字符串,需要转为数字
let str = Number(this.value);
console.log(str)
// 在if里判断数字大于零且小于等于15
if (str>0 && str<=15) {
isMin = true;
this.nextElementSibling.innerHTML = ' *格式正确 ';
} else {
isMin = false;
this.nextElementSibling.innerHTML = ' 请输入1-15的值 ';
}
check();//效果等于isNull()
};
//最大,最小长度
ipts[10].oninput = function () {
let str = this.value;
console.log(str)
let Reg = /^\d{1,6}$/
if (Reg.test(this.value)) {
isLength = true;
this.nextElementSibling.innerHTML = ' *格式正确 ';
} else {
isLength = false;
this.nextElementSibling.innerHTML = ' *请输入1-6的长度值 ';
}
check();
};
// 文件格式监测
/* ipts[11].oninput = function () {
let str = this.value;
console.log(str)
let Reg = /^.+\.(jpeg|png|gif|jpg)$/
if (Reg.test(this.value)) {
isimg = true;
this.nextElementSibling.innerHTML = ' *格式正确 ';
} else {
isimg = false;
this.nextElementSibling.innerHTML = ' *请输入有效的文件格式证号 ';
}
check();
}; */
// 新建一个函数,全部输入正确可以点击提交按钮,否则不能
function check() {
console.log(isUserName , isMail , isPassword , isConfirmPassword ,
isTel , isId ,isPostalcode , isString, isChinese,isMin , isLength)
if (isUserName && isMail && isPassword && isConfirmPassword &&
isTel && isId && isPostalcode && isString && isChinese && isMin && isLength) {
btn.disabled = false
console.log(111)
} else {
btn.disabled = true
}
}
check()
// 全部输入正确可以提交,否则不能
/* btn.onclick = function () {
if (isUserName && isMail && isPassword && isConfirmPassword &&
isTel && isId && isPostalcode && isString && isChinese && isMin && isLength)
{
console.log('可以提交注册')
} else {
console.log('不可以提交注册')
}
} */
// check()不加他会导致对应的input文本框不填也可提交
</script>
</body>
</html>