IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> JAVASCRIPT表单校验 -> 正文阅读

[JavaScript知识库]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 就可以获取文本框中的值了)

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:09:15  更:2022-05-05 11:10:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:32:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码