zoukankan      html  css  js  c++  java
  • 表单事件 验证码判断

     <form action="./01_复习.html" method="GET">
            账号: <input type="text"><span name="1"></span><br>
            密码: <input type="password"><span name="2"></span><br>
            <button>提交</button>
        </form>

        <script>
            // 表单事件,都是与form表单相关的事件
            // 多用于提交标签的验证判断

            // 1,要组织默认事件的执行

            // 例如 : 点击button按钮就会执行提交表单事件,需要阻止这个默认事件
            //        点击鼠标右键,弹出的内容,也是默认事件,也可以阻止

            // 阻止鼠标右键事件
           document.oncontextmenu = function(e){
                // 事件对象的兼容
                e = e || window.event

                // 阻止右键单击,默认事件的执行,没有不会弹出默认的右键菜单
                if(e.preventDefault){
                    // 普通浏览器,阻止默认事件的方式
                    e.preventDefault()
                }else{
                    // 低版本IE浏览器阻止默认事件方式
                    e.returnValue = false;
                }
            
                console.log(123);
           } 


            // 表单事件1: submit 表单提交事件
            //           submit 提交事件的事件对象,必须是,只能是,一定要是 form表单

            var oFrom = document.querySelector('form');

            oFrom.onsubmit = function(e){
                // 兼容事件对象
                e = e || window.event;

                // 阻止默认事件的执行
                if(e.preventDefault){
                    // 普通浏览器,阻止默认事件的方式
                    e.preventDefault()
                }else{
                    // 低版本IE浏览器阻止默认事件方式
                    e.returnValue = false;
                }

                // 执行验证判断,如果验证通过,会执行ajax传参

                // 前端只能验证,数据是否符合,语法规范
                // 不能验证账号,密码是否正确,要验证,必须要通过服务器和数据库进行操作

                // 目前就简单的验证一下
                // 账号密码的长度都必须在 8-16 位之间

                // 获取标签的数据,可以通过
                // 标签对象.value 来获取标签的数据或者设定标签的数据
                // 获取到的数据,是字符串形式
                // 通常情况下,验证判断输入内容是否符合规范,不需要转化为数值类型
                // 字符串验证判断更方便

                // 可以通过不同的type属性和属性值来获取标签对象
                // var oIpt1 = document.querySelector('[type="text"]');
                // var oIpt2 = document.querySelector('[type="password"]');
                // console.log(oIpt1,oIpt2);

                // 也可以通过标签名称,获取标签对象的伪数组,通过索引下标,获取具体的标签
                // document.querySelectorAll('input') 所有input的伪数组
                // document.querySelectorAll('input')[0] 通过索引下标,获取具体的一个标签对象
                // document.querySelectorAll('input')[0].value 或者这一个标签对象的value属性值,也就是数据数值

                var oIpt1 = document.querySelectorAll('input')[0].value;
                var oIpt2 = document.querySelectorAll('input')[1].value;
                console.log(oIpt1,oIpt2);


                // 获取两个span标签,准备写入提示信息
                var oSpan1 = document.querySelectorAll('span')[0];
                var oSpan2 = document.querySelectorAll('span')[1];


                // 获取字符串数据后,可以根据字符串的length属性判断长度
                // 账号长度在 8-16位之间,密码长度在 8-16位之间,允许提交
                // 否则,不允许提交,弹出报错信息

                
                // 验证判断账号
                if(oIpt1.length >= 8 &&  oIpt1.length <= 16){
                    // 账号符合规范
                    // 给账号之后的span,内容清空
                    oSpan1.innerHTML = '';
                }else{
                    // 账号不符合规范
                    // 给账号之后的span,添加内容
                    oSpan1.innerHTML = '<em style="color:red">账号不符合规范<em>';
                }


                // 验证判断密码
                if(oIpt2.length >= 8 &&  oIpt2.length <= 16){
                    // 密码符合规范
                    // 给密码之后的span,内容清空
                    oSpan2.innerHTML = '';
                }else{
                    // 密码不符合规范
                    // 给密码之后的span,添加内容
                    oSpan2.innerHTML = '<em style="color:red">密码不符合规范<em>';
                }
     
     
     <form action="./01_复习.html">

            验证码: <input type="text"> <span></span><br>
            <h1></h1>

            <button>提交</button>
        
        </form>

        <script src="./tools.js"></script>
        <script>
            // 1,获取标签对象
            // 此时只获取标签对象,不要获取标签数据
            // 页面初始状态,标签中没有输入数据
            var oFrom = document.querySelector('form');
            var oIpt = document.querySelector('input');
            var oSpan = document.querySelector('span');

            var oH1 = document.querySelector('h1');


            // 2,通过随机验证码函数,将验证码字符串写入到标签中
            // 看不清楚换一张的效果
            
            // 页面起始,先给span标签写入一个验证码
            oSpan.innerHTML  = mySetVc();

            // 点击span标签,给span标签重新吸入新的验证码
            oSpan.addEventListener('click' , function(){
                // 重新调用随机字符串函数,生成新的随机字符串,写入到标签中
                oSpan.innerHTML  = mySetVc();
            })


            oFrom.onsubmit = function(e){
                // 1,兼容事件对象
                e = e || window.event;

                // 2,阻止默认事件执行
                // 阻止默认事件的执行
                if(e.preventDefault){
                    // 普通浏览器,阻止默认事件的方式
                    e.preventDefault()
                }else{
                    // 低版本IE浏览器阻止默认事件方式
                    e.returnValue = false;
                }

                // 3,判断验证码输入是否正确
                // 获取写入到标签中的验证码内容
                var vc = oSpan.innerHTML;

                // 获取input中输入的数据
                var oIptVal = oIpt.value;

                // 如果区分大小写,没需要其他操作,直接比较数据是否相等
                // 如果不区分大小写,需要大小写统一
                if( vc.toLowerCase() === oIptVal.toLowerCase() ){
                    oH1.innerHTML = '';
                    console.log('验证码输入正确');
                }else{
                    oH1.innerHTML = '<em style="color:red">验证码输入错误</em>';
                }
            }
     
    // 生成验证码函数
    function mySetVc(){
        var str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXUZ';
        var newStr = '';    
        for(var i = 1 ; i <= 6 ; i++){
            var num = parseInt( Math.random()*str.length )

            if(newStr.indexOf(str[num]) === -1){
                newStr += str[num];
            }else{
                i--;
            }
        }

        return newStr;
    }
    右侧打赏一下 代码改变世界一块二块也是爱
  • 相关阅读:
    TypeScript 源码详细解读(3)词法2-标记解析
    TypeScript 源码详细解读(2)词法1-字符处理
    TypeScript 源码详细解读(1)总览
    7年编程语言设计精华总结——写给想创造或正在创造一门新编程语言的同学
    我为什么开发新语言
    CLR值类型和引用类型
    运行时内存模型
    IronPython之基本类型
    .NET 应用程序域?
    .NET程序如何启动?
  • 原文地址:https://www.cnblogs.com/ht955/p/14077231.html
Copyright © 2011-2022 走看看