表单验证的实现

表单验证

实现输入的内容符合我制定的标准返回√否则返回X,在点击提交按钮的时候,只有在我输入的表单域全部符合我制定的标准时,才能提交过去

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>表单验证</title>
</head>

<body>
    <form action="#">
        <label for="userName">用户名:</label>
        <input type="text" name="" id="userName"><span class="span1"></span>
        <br>
        <label for="userPwd">密码:</label>
        <input type="password" name="" id="userPwd"><span class="span2"></span>
        <br>
        <label for="userRepwd">确认密码:</label>
        <input type="password" name="" id="userRepwd"><span class="span3"></span>
        <br>
        <label for="userEmail">邮箱:</label>
        <input type="email" name="" id="userEmail"><span class="span4"></span>
        <br>
        <input type="submit" value="提交" id="submit">
    </form>
    <script>
        let userName = document.getElementById("userName");
        let userPwd = document.getElementById("userPwd");
        let userRepwd = document.getElementById("userRepwd");
        let userEmail = document.getElementById("userEmail");
        let submit = document.getElementById("submit");
        let span1 = document.querySelector(".span1");
        let span2 = document.querySelector(".span2");
        let span3 = document.querySelector(".span3");
        let span4 = document.querySelector(".span4");
        //封装事件
        function obj(user, span, add) {
            return function () {
                if (add.test(user.value)) {
                    span.innerHTML = "√";
                    span.style.color = "green";
                    return true;
                } else {
                    span.innerHTML = "×";
                    span.style.color = "red";
                    return false
                }
            }

        }
        //重复密码
        let rePwd = function () {
            if (/^\w{6,20}$/.test(userRepwd.value) && userRepwd.value == userPwd.value) {
                span3.innerHTML = "√";
                span3.style.color = "green";
                return true;
            } else {
                span3.innerHTML = "×";
                span3.style.color = "red";
                return false
            }
        }

        //判断用户名
        let usernamePd = /^\w{6,20}$/;
        userName.onblur = obj(userName, span1, usernamePd);

        //判断密码
        let userpwdPd = /^\w{6,20}$/;
        userPwd.onblur = obj(userPwd, span2, userpwdPd);

        //重复密码
        userRepwd.onblur = rePwd;

        //判断邮箱
        let useremailPd = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
        userEmail.onblur = obj(userEmail, span4, useremailPd);


        //提交事件
        document.forms[0].onsubmit = function (e) {

            if (obj(userName, span1, usernamePd)() && obj(userPwd, span2, userpwdPd)() && obj(userEmail, span4, useremailPd)() && rePwd()) {
                console.log(userName.value, userPwd.value, userEmail.value);
            }
            else {
                alert("请检查输入得是否正确")
                e.preventDefault();
            }
        }
    </script>
</body>

</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值