表单验证-阻止事件发生的应用

 

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>

 







 

posted on 2017-09-03 17:05  momo8238  阅读(174)  评论(0编辑  收藏  举报