javascript表单校验注册页面

一个简单的HTML页面 利用javascript知识点 和正则表达公式 练习巩固一下

然后突发奇想 仿制一下QQ的注册页面(仅校验部分)

 一、前言

 

 

 

 

欧克欧克,完事了 总结一下 模仿的超级烂 但是里面知识点 是javascript中比较经典的了 因为这些功能截止到现在大都相同 剩下的就是细节优化 界面美化了 看图

1.1、表单提交的效果图

1.2、表单校验信息提示效果图

 二、主要代码

2.1、<style>部分

 <style>
        * {
            margin: 0px;
            padding: 0px;
            box-sizing: border-box;
        }

        body {
            background: url("img/register_bg.png") no-repeat center;
            padding-top: 25px;
        }

        .rg_layout {
            width: 900px;
            height: 500px;
            border: 8px solid #EEEEEE;
            background-color: white;
            /*让div水平居中*/
            margin: auto;
        }

        .rg_left {
            /*border: 1px solid red;*/
            float: left;
            margin: 15px;
        }

        .rg_left > p:first-child {
            color: #FFD026;
            font-size: 20px;
        }

        .rg_left > p:last-child {
            color: #A6A6A6;
            font-size: 20px;

        }


        .rg_center {
            float: left;
            /* border: 1px solid red;*/

        }

        .rg_right {
            /*border: 1px solid red;*/
            float: right;
            margin: 15px;
        }

        .rg_right > p:first-child {
            font-size: 15px;

        }

        .rg_right p a {
            color: pink;
        }

        .td_left {
            width: 100px;
            text-align: right;
            height: 45px;
        }

        .td_right {
            padding-left: 50px;
        }

        #username, #password, #email, #name, #phone, #birthday, #checkcode {
            width: 251px;
            height: 32px;
            border: 1px solid #A6A6A6;
            /*设置边框圆角*/
            border-radius: 5px;
            padding-left: 10px;
        }

        #checkcode {
            width: 110px;
        }

        #img_check {
            height: 32px;
            vertical-align: middle;
        }

        #btn_sub {
            width: 150px;
            height: 40px;
            background-color: #FFD026;
            border: 1px solid #FFD026;
        }

        #cen_sub {
            padding-left: 150px;
        }

        #chck {
            color: #A6A6A6;
            padding-left: 150px;
            padding-top: 20px;
        }

        /*提示成功显示*/
        .error {
            color: red;
        }
        span{
            margin-left: 100px;
        }

        .correct {
            display: inline-block;
            width: 10px;
            height: 3px;
            background: #008100;
            line-height: 0;
            font-size: 0;
            vertical-align: middle;
            -webkit-transform: rotate(45deg);
        }

        .correct:after {
            content: '/';
            display: block;
            width: 20px;
            height: 3px;
            background: #008100;
            -webkit-transform: rotate(-90deg) translateY(-50%) translateX(50%);
        }

        #img_static{
            width: 20px;height: 15px;
        }
    </style>

2.2、<script>部分

 <script>
        window.onload = function () {
            //绑定onsubmit事件
            document.getElementById("form").onsubmit = function () {
                //用户校验
                //密码校验
                //邮箱校验
                //姓名校验
                //手机号校验
                //出生日期校验
                //验证码校验
                //服务条款校验
                img_static();




                return checkUsername() && checkPassword() && checkEamil() && checkName() && checkPhone() && checkBirthday() && checkbox();

            }
            //给用户名和密码框分别绑定离焦事件
            document.getElementById("username").onmouseout = checkUsername;
            document.getElementById("password").onmouseout = checkPassword;
            document.getElementById("email").onmouseout = checkEamil;
            document.getElementById("name").onmouseout = checkName;
            document.getElementById("phone").onmouseout = checkPhone;
            document.getElementById("birthday").onmouseout = checkBirthday;
            document.getElementById("img_static").onmouseup = img_static;
            document.getElementById("btn_sub").onmouseup = checkbox;

        }
        //用户校验
        function checkUsername() {
            //获取值
            var username = document.getElementById("username").value;
            //定义正则
            var reg_username = /^[a-zA-Z][a-zA-Z0-9_]{4,15}$/;//帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线)
            //校验正则
            var flag = reg_username.test(username);
            //提示信息
            var s_username = document.getElementById("s_username");

            if (flag) {
                //true
                // s_username.innerHTML = "<span class='correct'></span>";
                s_username.innerHTML = "<img src='img/ok_green.png' style='height: 25px;margin-right: 50px;'></img>";
            } else {

                s_username.innerHTML = "<img src='img/no.png' style='height: 25px;margin-right: 50px;'>账户错误</img>";
                // s_password.innerHTML = "字母开头";

            }
            return flag;
        }
        //密码校验
        function checkPassword() {
            //获取值
            var password = document.getElementById("password").value;
            //定义正则
            var reg_password = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$/;//强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 8-10 之间)
            //校验正则
            var flag = reg_password.test(password);
            //提示信息
            var s_password = document.getElementById("s_password");

            if (flag) {
                //true
                // s_username.innerHTML = "<span class='correct'></span>";
                s_password.innerHTML = "<img src='img/ok_green.png' style='height: 25px;margin-right: 50px;'></img>";
            } else {
                s_password.innerHTML = "<img src='img/no.png' style='height: 25px;margin-right: 50px;'>密码错误</img>";
                // s_password.innerHTML = "包含大小写字母和数字";
            }
            return flag;
        }

        //邮箱校验
        function checkEamil() {

            var email = document.getElementById("email").value;

            var reg_email = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;//邮箱校验

            var flag = reg_email.test(email);

            var s_email = document.getElementById("s_email");

            if (flag) {
                s_email.innerHTML = "<img src='img/ok_green.png' style='height: 25px;margin-right: 50px;'></img>";
            } else {
                s_email.innerHTML = "<img src='img/no.png' style='height: 25px;margin-right: 50px;'>邮箱错误</img>";

            }
            return flag;
        }

        //姓名校验
        function checkName() {

            var name = document.getElementById("name").value;

            var reg_name = /^[\u4e00-\u9fa5]{2,6}$/;//汉字

            var flag = reg_name.test(name);

            var s_name = document.getElementById("s_name");

            if (flag) {
                s_name.innerHTML = "<img src='img/ok_green.png' style='height: 25px;margin-right: 50px;'></img>";
            } else {
                s_name.innerHTML = "<img src='img/no.png' style='height: 25px;margin-right: 50px;'>姓名错误</img>";

            }
            return flag;
        }

        //手机号校验
        function checkPhone() {

            var phone = document.getElementById("phone").value;

            var reg_phone = /^(13[0-9]|17[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$/;//手机号

            var flag = reg_phone.test(phone);

            var s_phone = document.getElementById("s_phone");

            if (flag) {
                s_phone.innerHTML = "<img src='img/ok_green.png' style='height: 25px;margin-right: 50px;'></img>";
            } else {
                s_phone.innerHTML = "<img src='img/no.png' style='height: 25px;margin-right: 50px;'>手机号错误</img>";

            }
            return flag;
        }
        //出生日期校验
        function checkBirthday() {

            var birthday = document.getElementById("birthday").value;

            var reg_birthday = /^((?:19[2-9]\d{1})|(?:20(?:(?:0[0-9])|(?:1[0-8])|(?:2[0-8]))))\-((?:0?[1-9])|(?:1[0-2]))\-((?:0?[1-9])|(?:[1-2][0-9])|30|31)$/;// 更加高级的可以说根据时间变化 动态获取年满18岁的出生日期正则
            //参考文章https://www.jb51.net/article/136913.htm

            var flag = reg_birthday.test(birthday);

            var s_birthday = document.getElementById("s_birthday");

            if (flag) {
                s_birthday.innerHTML = "<img src='img/ok_green.png' style='height: 25px;margin-right: 50px;'></img>";
            } else {
                s_birthday.innerHTML = "<img src='img/no.png' style='height: 25px;margin-right: 50px;'>出生日期错误</img>";

            }
            return flag;
        }

        //用户协议校验
        var flag = false;
        function img_static() {
            var img = document.getElementById("img_static");
            var xieyi = document.getElementById("xieyi");
               if (flag){
                   img.src = "https://qq-web.cdn-go.cn/zc.qq.com/9315f3d4/v3/img/up.png";
                   xieyi.style.display = 'none';
                   flag = false;
               }else{
                   img.src = "https://qq-web.cdn-go.cn/zc.qq.com/9315f3d4/v3/img/down.png";
                   xieyi.style.display = 'inline';
                   flag = true;
           }
        }
        //多选框校验
         function checkbox() {
             var cb = document.getElementsByName("cb");
             var length = cb.length;
             // alert(length)
             for (let i = 0; i < cb.length; i++) {

                if (cb[i].checked == true){
                    alert("提交表单成功")
                    return true
                }else{
                    alert("请先进行协议同意")
                    return false;
                }


             }




        }



    </script>

2.3、<HTML>部分

这部分就不贴出来了 自己在做的时候 很大程度的限制了 对于排版 界面的美观 换句话说 不够简洁 太low 所以 小伙伴们可以学习一下 css代码 script部分的代码也是 边学边用 所以很多地方都有写了详细注释 对于重复部分的可能没有注释就

三、不足 改进

1、不够简洁(整个页面看起来 很繁琐 没有QQ注册的那种简洁 )

2、用户体验感差(整个注册规则貌似只有自己知道 或者看注释才能知道 所以没有很好的将详细提示信息展示出来)
3、升级日期校验(日期框框的校验部分 还可以在高级一点 就是只允许年龄满18周岁的人注册)

4、验证码校验 (因为这个小案例中的验证码是图片插入形式 所以 很大程度上校验是不够完整或者说意义不太大 在后面改进的话 是通过MATH.Rondom()随机生成数字 然后在getelementById 就可以获取文本框中的值了)

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妙趣生花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值