zoukankan      html  css  js  c++  java
  • 表单验证-阻止事件发生的应用

    1. jquery方法实现表单验证(return的应用)

    如果有输入内容,则返回true,可以正常提交;否则返回false,并且弹出对话框“请输入内容”,后续的提交就终止了。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <form action="s15.html" method="post">
            <input type="text"/>
            <input type="submit" value="提交"/>
        </form>
        <script src="jquery-1.12.4.js"></script>
        <script>
            $(':submit').click(function(){
                var v=$(this).prev().val();
                if(v.length>0){return true;}
                else{
                alert('请输入内容')
                return false;}
            })
    
        </script>
    
    </body>
    </html>
    

    2. 下面的return false 只是相当于break的作用,如果第1个验证为空的话,则后续的就不再验证了。

    这个return false 并没有返回给上面的submit,经测试:此时可以正常提交。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <form id="f1" action="s15.html" method="POST">
            <div><input type="text" name="n1"/></div>
            <div><input type="password" name="n2"/></div>
            <div><input type="text" name="n3"/></div>
            <div><input type="text" name="n4"/></div>
            <div><input type="text" name="n5"/></div>
    
            <input type="submit" value="提交"/>
        </form>
        <script src="jquery-1.12.4.js"></script>
    
        <script>
            $(':submit').click(function(){
    
                $('#f1').find('input[type="text"],input[type="password"]').each(function(){
                    var v=$(this).val();
                    if(v.length<=0){
                        return false;//有这句的话,如果第1个有问题的话,后面的就不再验证了。类似于break。
                    }
                })
    
            });
    
        </script>
    </body>
    </html>
    

    3. 所以我们需要再加一个return false 返回给submit。如下所示:此时达到了效果,只要有一个是空值,则无法提交。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <form id="f1" action="s15.html" method="POST">
            <div><input type="text" name="n1"/></div>
            <div><input type="password" name="n2"/></div>
            <div><input type="text" name="n3"/></div>
            <div><input type="text" name="n4"/></div>
            <div><input type="text" name="n5"/></div>
    
            <input type="submit" value="提交"/>
        </form>
        <script src="jquery-1.12.4.js"></script>
    
        <script>
            $(':submit').click(function(){
                var flag=true;
                $('#f1').find('input[type="text"],input[type="password"]').each(function(){
                    var v=$(this).val();
                    if(v.length<=0){
                        flag=false;
                        return false;//有这句的话,如果第1个有问题的话,后面的就不再验证了。
                                      //类似于break。整个each循环终止了,无法起到提交的作用
                    }
                })
                return flag;
            });
    
        </script>
    </body>
    </html>
    

    4. 哪一项为空,则出现哪一项的错误提示:

      当点击submit的时候,先把所有的红色错误提示去掉。然后挨个检查,如果哪个标签为空的话,则会加上红色的错误提示样式。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .error{
             color:red;
            }
        </style>
    </head>
    <body>
        <form id='f1' action="s15.html" method="POST">
            <div><input name="n1" type="text"/></div>
            <div><input name="n2" type="password"/></div>
            <div><input name="n3" type="text"/></div>
            <div><input name="n4" type="text"/></div>
            <div><input name="n5" type="text"/></div>
    
            <input type="submit" value="提交"/>
        </form>
        <script src="jquery-1.12.4.js"></script>
        <script>
            $(':submit').click(function(){
                $('error').remove()
                var flag=true;
    
                $('#f1').find('input[type="text"],input[type="password"]').each(function(){
                    var v=$(this).val();
                    if(v.length<=0){
                        flag=false;
                        var tag=document.createElement('span');
                        tag.className="error";
                        tag.innerHTML="必填"
                        $(this).after(tag);
                        //return false;
                    }
                });
                return flag;
            });
        </script>
    </body>
    </html>
    

     效果:

    5.如果加上return false的话,则如前面所说的,一个一个挨个验证,如果第一个出现错误的话,就不再验证后面的了。

     5. 上面的input标签渲染完成之后,下面的submit才会生效。但是如果上面有个<img src="......">时,则可能会延迟下面的绑定。

    把函数写到下面的函数里面,则会提前加载。如果前面有图片的话,也不用等图片加载完毕再工作。


    #当页面框架加载完成之后,自动执行
     $(function(){
      $(默认要执行的操作)
     })

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .error{
             color:red;
            }
        </style>
    </head>
    <body>
        <form id='f1' action="s15.html" method="POST">
            <div><input name="n1" type="text"/></div>
            <div><input name="n2" type="password"/></div>
            <div><input name="n3" type="text"/></div>
            <div><input name="n4" type="text"/></div>
            <div><input name="n5" type="text"/></div>
    
            <input type="submit" value="提交"/>
        </form>
        <script src="jquery-1.12.4.js"></script>
        <script>
            //当页面框架加载完毕后,自动执行
        $(function(){
    
    
            //当页面所有元素完全加载完毕后,才会执行
            $(':submit').click(function(){
                $('error').remove()
                var flag=true;
    
                $('#f1').find('input[type="text"],input[type="password"]').each(function(){
                    var v=$(this).val();
                    if(v.length<=0){
                        flag=false;
                        var tag=document.createElement('span');
                        tag.className="error";
                        tag.innerHTML="必填"
                        $(this).after(tag);
                        //return false;
                    }
                });
                return flag;
            });
            
        });
        </script>
    </body>
    </html>
    






  • 相关阅读:
    致那些不甘寂寞的人
    实现一个前端路由,如何实现浏览器的前进与后退 ?
    github 授权登录教程与如何设计第三方授权登录的用户表
    十分钟弄懂:数据结构与算法之美
    前端架构师亲述:前端工程师成长之路的 N 问 及 回答
    JavaScript 数据结构与算法之美
    JavaScript 数据结构与算法之美
    JavaScript 数据结构与算法之美
    HTTPS中间人攻击实践(原理·实践)
    借助FreeHttp任意篡改http报文 (使用·实现)
  • 原文地址:https://www.cnblogs.com/momo8238/p/7470021.html
Copyright © 2011-2022 走看看