JavaScript表单验证

简单验证

使用String类型来对数据格式进行判断
先验证用户名与密码,给未填写提示
设置约束给判断提示

这是登录的界面

<form action="" id="myForm">
    <p>名字: <input type="text" id="userName" onkeyup="checkLabel(this)"><span><i class="error"></i></span></p>
    <p>密码: <input type="text" id="userPwd" onkeyup="checkLabel(this)"><span><i class="error"></i></span></p>
    <p>邮箱: <input type="text" id="userEmail" onkeyup="checkLabel(this)"><span><i class="error"></i></span></p>
    <p>
        <button>登录</button>
    </p>
</form>

检查名字

1
//用来检查名字是否合规
function checkLabel(obj) {
var length = obj.value.length
// var label=obj.nextElementSibling
var label = obj.parentElement.getElementsByClassName(“error”)[0]
if (length > 0) {//里面有内容
//名字的大小应该在 3-6 之间
if (length >= 3 && length <= 6) {
label.textContent = “😊”
return true
}
//不在区间之内
label.textContent = “长度必须在3-6之间”
return false
}
//里面没有内容
label.textContent = “长度必须大于0”
return false
}

2
//用来检查名字是否合规
function checkName() {
var length = userName.value.length
if (length > 0) {//里面有内容
//名字的大小应该在 3-6 之间
if (length >= 3 && length <= 6) {
l1.textContent = “😊”
return true
}
//不在区间之内,因为一般输入框后都有提示
l1.textContent = “长度必须在3-6之间”
return false
}
//里面没有内容
l1.textContent = “长度必须大于0”
return false
}

检查密码

//用来检查密码是否合规
    function checkPwd() {
        var length = userPwd.value.length
        if (length > 0) {//里面有内容
            //名字的大小应该在 3-6 之间
            if (length >= 3 && length <= 6) {
                l2.textContent = "😊"
                return true
            }
            //不在区间之内
            l2.textContent = "长度必须在3-6之间"
            return false
        }
        //里面没有内容
        l2.textContent = "长度必须大于0"
        return false
    }

检查邮箱

//用来检查邮箱是否合规
function checkEmail() {
var length = userEmail.value.length
if (length > 0) {//里面有内容
//名字的大小应该在 3-6 之间
if (length >= 3 && length <= 6) {
l3.textContent = “😊”
return true
}
//不在区间之内
l3.textContent = “长度必须在3-6之间”
return false
}
//里面没有内容
l3.textContent = “长度必须大于0”
return false
}
当数据都输入合规时需要写提交事件
//添加提交事件(会具备返回值)
myForm.onsubmit = () => {
//阻止表单的提交 需要返回 false
// return checkName()&&checkPwd()&&checkEmail()
var f1 = checkLabel(userName)
var f2 = checkLabel(userEmail)
var f3 = checkLabel(userPwd)
return f1 && f2 && f3
}

正则验证

正则的规则

\d数字[0~9]
\D非数字^ [0~9](^与[]之间没有空格)
\w数字+英文+下划线[0~9a-zA-Z_]
\W非数字+英文+下划线^ [0~9a-zA-Z_](^与[]之间没有空格)
.任意数字
? 0~1次
+至少一次
*0~任意次
\d{n}n个数字
\d{n~m}至少n次,最多m次

注意事项

规则必须以/^开头
规则必须以&/结尾
规则只需要\d,而不是\d
定义正则对象:var rex=/^\d{4}$/
使用正则对象:rex.test(‘123’)

正则验证

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="text" id="m1">
<span id="l1"></span>
<p>
    密码等级<span id="l2"></span>
</p>
<script>
    m1.onkeyup=function (){
        //长度必须在6-10之间
        var str=m1.value
        if(str!=""){
            //定义正则
            var r1=/^\w{6,10}$/
            // 数字 英文(小写 大写) .
            var r2=/^.*[a-z].*$/
            var r3=/^.*[A-Z].*$/
            var r4=/^.*\d.*$/
            //密码等级
            var dj=""
            //开始正则验证
            if(r1.test(str)){
                l1.textContent="O(∩_∩)O😄"
                if(r2.test(str))dj+="☆"
                if(r3.test(str))dj+="☆"
                if(r4.test(str))dj+="☆"
                l2.textContent=dj
                return
            }
            //不满足
            l1.textContent="不符合格式"
            return
        }
        l1.textContent="不能为空"
    }

</script>
</body>
</html>

二级联动

需要数组来写
//类型不限制
//长度不限制
//数组可以是字符串

var provinces=[]
    //城市
    provinces["日本省"]=["北海道","桥豆麻袋","摩西摩西"]
    provinces["湖南省"]=["长沙","北京","西八"]
    provinces["广西省"]=["表妹","螺蛳粉","表郭"]

二级联动代码总览

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<select id="province" onchange="myChange()"></select>
<select id="cities"></select>

<script>

    //数组怎么写?
    //类型不限制
    //长度不限制
    //数组可以是字符串
    var provinces=[]
    //城市
    provinces["日本省"]=["北海道","桥豆麻袋","摩西摩西"]
    provinces["湖南省"]=["长沙","北京","西八"]
    provinces["广西省"]=["表妹","螺蛳粉","表郭"]


    //省份怎么来
    //  for of 相当于foreach 遍历元素
    //  for in 遍历下标
    for(let i in provinces){
        //往省份的下拉框中添加选项
        //<option value="i">i</option>
        province.appendChild(new Option(i,i))
    }

    //城市里面放谁?
    function setCity(name) {
        for(let i of provinces[name]){
            cities.appendChild(new Option(i,i))
        }
    }

    setCity(province.value)

    function myChange() {
        //清空原来的选项
        cities.innerHTML=""
        //输入框 和 下拉框
        setCity(province.value)
    }
</script>
</body>
</html>

今天就到这了,明天见

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值