s14 jQuery笔记

jQuery

____oldboy python s14
    
- 知识
    - 相当于python的模块,其他语言的类库
    - 集合了DOM/BOM/JavaScript的类库
    - jQuery文档:http://jquery.cuishifeng.cn/    
    - 版本:
        1.x  1.12 # 推荐1.X 兼容性好,针对IE旧版
        2.x
        3.x
    
    - jQuery、DOM转换:
        jquery对象[0]   ==> Dom对象
        Dom对象         ==> $(Dom对象)
    
    

- 选择器,直接找到某个或者某类标签
    1. id
        $('#id')
    2. class
        <div class='c1'></div>
        $(".c1")
    3. 标签
        <div id='i10' class='c1'>
            <a>f</a>
            <a>f</a>
        </div>
        <div class='c1'>
            <a>f</a>
        </div>
        <div class='c1'>
            <div class='c2'> </div>
        </div>
        
        $('a')
        
    4. 组合
        <div id='i10' class='c1'>
            <a>f</a>
            <a>f</a>
        </div>
        <div class='c1'>
            <a>f</a>
        </div>
        <div class='c1'>
            <div class='c2'> </div>
        </div>
        
        $('a')
        $('.c2')
        $('a,.c2,#i10')
        
    5. 层级
        $('#i10 a') 子子孙孙
        $('#i10>a') 儿子
        
    6. 基本筛选器
        :first    # 第一个
        :last   #
        :eq()    # 根据索引,从0开始
    7. 属性选择器
        $('[alex]')       具有alex属性的所有标签
        $('[alex="123"]') alex属性等于123的标签

        <input type='text'/>
        <input type='text'/>
        <input type='file'/>
        <input type='password'/>
        
        $("input[type='text']")
        $(':text')

    - 多选,反选,全选的实现:
        - 选择器功能
        - prop对checked/selected操作
            $('#tb:checkbox').prop('checked');        获取值
            $('#tb:checkbox').prop('checked', true);  设置值
            
        - jQuery方法内置循环
            $('#tb:checkbox').xxxx
            
        - $('#tb:checkbox').each(function(k){
                // k当前索引
                // this:DOM,当前循环的元素 $(this)
            })
        - 三元运算:
            var v = 条件 ? 真值 : 假值
            
    -- 左侧菜单实现                    

                
- 筛选器

    $('#i1').next()    **
    $('#i1').nextAll()
    $('#i1').nextUntil('#ii1')
    
    <div>
        <a>asdf</a>
        <a>asdf</a>
        <a id='i1'>asdf</a>
        <a>asdf</a>
        <a id='ii1'>asdf</a>
        <a>asdf</a>
    </div>
    
    $('#i1').prev()    **
    $('#i1').prevAll()
    $('#i1').prevUntil('#ii1')
                    
    $('#i1').parent()    **
    $('#i1').parents()
    $('#i1').parentsUntil()
    
    $('#i1').children()    **
    $('#i1').siblings()    **
    $('#i1').find()        **
    
    $('li:eq(1)')
    $('li').eq(1)
    first()
    last()
    hasClass(class)

- 文本操作:
    $(..).text()           # 获取文本内容
    $(..).text(“<a>1</a>”) # 设置文本内容,不解析标签
    
    $(..).html()
    $(..).html("<a>1</a>")
    
    $(..).val()                # input/select/textarea...同value
    $(..).val()                # select 如果是多选,拿到列表!!
    $(..).val(..)
        
- 样式操作:
    addClass
    hasClass            # 判断有无clss
    removeClass
    toggleClass()        # 无则添加,有则取消
        
- 属性操作:

    # 专门用于做自定义属性
    $(..).attr('n')                # 获取属性n的值 ***
    $(..).attr('n','v')            # 设置属性:n='v';
    $(..).removeAttr('n')
        
    <input type='checkbox' id='i1' />
    # jQuery 3.x版本以下: 可能出问题。
    # $('#i1').attr('checked','checked') 选中正常
    # $('#i1').removeAttr('checked')      取消后无法再设置
    
    # 专门用于chekbox,radio
    $(..).prop('checked')    ***
    $(..).prop('checked', true)
    $(..).prop('checked', false)
    
    
    $(this).index() 获取索引位置
                    
    - 模态对话框示例

            
    - TAB切换示例:
        添加属性方式:
        通过索引方式:
                    
- 文档处理:
    append                # 添加值
    prepend
    prependTo(temp)     # 向temp中添加
    after
    before
    
    remove                # 删除
    empty               # 只清空内容,标签还在
    
    clone                # 克隆
                
    - 添加删除复制标签示例:
            
        
- css处理
    
    $('t1').css('样式名称', '样式值')
    点赞:
         - $('t1').append()
         - $('t1').remove()
         - setInterval
         - 透明度 1 —> 0
         - position
         - 字体大小,位置
        
    点赞示例
    
    
- 位置
 
    $(window).scrollTop()           # 获取
    $(window).scrollTop(0)           # 设置
    scrollLeft([val])
    
    #s14.html
    
    $().offset()                  # 获取标签坐标
    offset().left                 # 指定标签在html中的坐标
    offset().top                  # 指定标签在html中的坐标
    
    position()                       # 指定标签相对父标签(relative)标签的坐标
    
    <div style='relative'>
        <div>
            <div id='i1' style='position:absolute;height:80px;border:1px'></div>
        </div>
    </div>
    
    
    $('i1').height()           # 纯高度
    $('i1').innerHeight()      # 纯高度 + padding
    $('i1').outerHeight()      # 纯高度 + padding+ border
    $('i1').outerHeight(true)  # 纯高度 + padding+ border + margin
    
    # 纯高度,边框,外边距,内边距
    
- 事件
    - jQuery绑定方式:
        $('.c1').click()
        $('.c1').....
        
        $('.c1').bind('click',function(){})
        $('.c1').unbind('click',function(){})
        
        ******** # 增加标签后绑定(委托)
        $('.c').delegate('a', 'click', function(){})
        $('.c').undelegate('a', 'click', function(){})
        
        $('.c1').on('click', function(){})
        $('.c1').off('click', function(){})
        
        绑定方式示例
        
    - 阻止事件发生
        return false
        阻止事件发生示例
        
    - 当页面框架加载完成之后,自动执行
        $(function(){
            $(...)
        })
    
    - 表单验证示例:
        
- jQuery扩展:
    - $('#i1').css()    # 选择器.方法
    - $.ajax            # $.函数

    - $.extend        $.方法
        $.extend({
            'wangsen':function(){
                return 'sb';
            }
        });
        
        var v = $.wangsen();
    
    - $.fn.extend     $(..).方法,得有选择器
        $.fn.extend({
            'hanyang':function(){
                return 'db';
            }
        });
        
        var v= $('#i1').hanyang()
        
    - 应用:    
        $(function(){
            $.Login('#f1')
            //扩展Login
        });
    
    - js插件
        - 插件使用:
            plugin.js
            -------------
            $.extend({
                'wangsen':function(){
                    return 'sb';
                }
            });
            --------------
            <script src="plugin.js"></script>
            <script>    
                var v= $.wangsen();
                alert(v);
            </script>
            
        - 不同插件,全局变量相同的解决
            plugin1.js
            ----------------------
            (function (arg) {
                var status = 1
                arg.extend({
                    'wangsen':function(){
                        return 'sb';
                    }
                });
            })(jQuery);
            -----------------------
        
            (function(){
                var status = 1;
                // 封装变量
            })(jQuery)

- JS正则表达式

    - test   - 判断字符串是否符合规定的正则
    
        rep = /\d+/;
        rep.test("asdfoiklfasdf89asdfasdf")
        /\d+/.test("asdfoiklfasdf89asdfasdf")
        # true
        
        rep = /^\d+$/;
        rep.test("asdfoiklfasdf89asdfasdf")
        # false
        
    - exec   - 获取匹配的数据
    
        rep = /\d+/;
        str = "wangshen_67_houyafa_20"
        rep.exec(str)
        # ["67"]    # 默认只取第一个
        
        var text = "JavaScript is more fun than Java or JavaBeans!"
        var pattern = /\bJava\w*\b/;
        pattern.exec(text)
        # ["JavaScript"]    # 默认只取第一个    
        
        var text = "JavaScript is more fun than Java or JavaBeans!"
        var pattern = /\bJava(\w*)\b/;
        pattern.exec(text)
        # ["JavaScript", "Script"]
        
        
        JavaScript is more fun than Java or JavaBeans!
        var pattern = /\bJava\w*\b/g;    # 全局匹配
        # ["JavaScript"]    # 执行一次
        # ["Java"]            # 执行二次
        # ["JavaBeans"]
        # null                # 匹配完返回null,再次匹配再次执行一遍。
        
        JavaScript is more fun than Java or JavaBeans!
        var pattern = /\bJava(\w*)\b/g;
        # ["JavaScript",'Script']
        # ["Java", ""]
        # ["JavaBeans", "Beans"]
        # null
        
    - 多行匹配:
    
        # /.../m 表示多行匹配
        # 默认就是多行匹配
        # ^$特殊
        
        JavaScript is more fun than \nJava or JavaBeans!
        var pattern = /^Java(\w*)/g;
        # ["JavaScript",'Script']    # 只匹配第一行
        
        JavaScript is more fun than \nJava or JavaBeans!
        var pattern = /^Java(\w*)/gm;
        # ["JavaScript",'Script']    # 多行匹配
        # ["Java", ""]
        
        
    - 登录注册验证
   
        默认事件先执行:
            checkbox
        自定义先执行:(绝大多数是)
            a
            submit
            ...
            
        <form>        
            <input type='type' />
            <input type='password' />
            <input type='submit' />    
        </form>
   
        $(':submit').click(function(){
            $(':text,:password').each(function(){
                ...
                return false;
            })
            return false;
        })   
 
        - JS验证
            示例略
        - 后端通过python实现

- JS插件

    - BootStrap
        https://v3.bootcss.com/
        - css
        - js

        a、响应式
            @media
            代码:
            <style>
                .c1{background-color: red;height: 50px;}
                @media (min-width: 900px) {
                    .c2{background-color: grey;}
                }
            </style>
            <body>
                <div class="c1 c2"></div>
            </body>    
            
        b、图标、字体
            @font-face
            
        c、基本使用
            ! important
    
    - jQueryUI * (后台管理)
        https://jqueryui.com/
        - css
        - js
    
    - EasyUI    (后台管理)
        http://www.jeasyui.net
        - css
        - js
        
    - 轮播图:
        bxslider.com    



        
    
- 多选,反选,全选代码:
    <body>
        <input type="button" value="全选" onclick="checkAll();">
        <input type="button" value="反选" onclick="reverseAll();">
        <input type="button" value="取消" onclick="cancleAll();">

        <table border="1">
            <thead>
                <tr><th>选项</th><th>IP</th><th>PORT</th></tr>
            </thead>
            <tbody id="tb"><!--为避免jQuery选错、选多,指定ID-->
                <tr><td><input type="checkbox"></td><td>1.1.1.1</td><td>80</td></tr>
                <tr><td><input type="checkbox"></td><td>1.1.1.1</td><td>80</td></tr>
                <tr><td><input type="checkbox"></td><td>1.1.1.1</td><td>80</td></tr>
            </tbody>
        </table>
        <script src="jquery-1.12.4.js"></script>
        <script>
            function checkAll(){
                $('#tb :checkbox').prop('checked',true);
            }
            function cancleAll(){
                $('#tb :checkbox').prop('checked',false);
            }
            function reverseAll(){
                $('#tb :checkbox').each(function(){
                    //this代指当前循环的每一个元素,this为DOM对象
                    //<fun 可带参数为索引:console.log(k,this)>
    //                if(this.checked){
    //                    this.checked = false;
    //                }else{
    //                    this.checked = true;
    //                }
                    //以下Jquery实现
    //                if($(this).prop('checked')){
    //                    $(this).prop('checked',false);
    //                }else{
    //                    $(this).prop('checked',true);
    //                }
                    //三元运算:var v = 条件?真值:假值
                    var v= $(this).prop('checked')?false:true;
                    $(this).prop('checked',v);
                })
            }
        </script>
    </body>    
    
- 左侧菜单:
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            .header{background-color: black;color:wheat;}
            .content{min-height: 50px;}
            .hide{display: none;}
        </style>
    </head>
    <body>
        <div style="height: 400px;width:200px;border: 1px solid #dddddd">
            <div class="item">
                <div class="header">标题</div>
                <div class="content">内容</div>
            </div>
            <div class="item">
                <div class="header">标题</div>
                <div class="content hide">内容</div>
            </div>
            <div class="item">
                <div class="header">标题</div>
                <div class="content hide">内容</div>
            </div>
        </div>
        <script src="jquery-1.12.4.js"></script>
        <script>
            $('.header').click(function () {
                //$('').click(function (){})绑定事件
                //$('.i1').addClass('hide')
                //$('#i1').removeClass('hide')
                //筛选器:(this).next();(this).prev();(this).parent();(this).siblings;(this).find('.c1')
                //$(this).next().removeClass('hide');
                //$(this).parent().siblings().find('.content').addClass('hide');
                //链式编程:
                $(this).next().removeClass('hide').parent().siblings().find('.content').addClass('hide');
            })
        </script>
    </body>
    
- 模态对话框示例
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            .hide{display: none;}
            .modal{position: fixed;top:50%;left:50%;width:500px;height: 400px;
                margin-left: -250px;margin-top: -250px;
                z-index: 10;}
            .shadow{position:fixed;;top:0;left:0;right:0;bottom:0;
                opacity: 0.6;background-color: black;z-index: 9;}
        </style>
    </head>
    <body>
        <a href="#" onclick="addElement();">添加</a>
        <!--# a标签href导致模态对话框出现后自己消失!!!-->
        <table border="1" id="tb">
                <tr><td target="hostname">1.1.1.1</td>
                    <td target="port">80</td>
                    <td target="ip">80</td>
                    <td><a class="edit">编辑</a><a class="del">删除</a></td></tr>
                <tr><td target="hostname">1.1.1.2</td>
                    <td target="port">82</td>
                    <td target="ip">80</td>
                    <td><a class="edit">编辑</a>|<a class="del">删除</a></td></tr>
        </table>
        <div class="modal hide">
            <div><input name="hostname" type="text">
                 <input name="port" type="text">
                 <input name="ip" type="text"></div>
            <div><input type="button"value="取消" onclick="cancelModal();">
            <input type="button"value="确定" onclick="confirmModal();"></div>
        </div>
        <div class="shadow hide"></div>
        <script src="jquery-1.12.4.js"></script>
        <script>
            $('.del').click(function () {
                $(this).parent().parent().remove();
            });
            function confirmModal(){
                // 仅通过DOM实现了添加固定数据。
                var tr = document.createElement('tr');
                var td1 = document.createElement('td');
                td1.innerHTML='11.11.11.11';
                var td2 = document.createElement('td');
                td2.innerHTML='8001';
                $(tr).append(td1);
                $(tr).append(td2);
                $('#tb').append(tr);
                $('.modal,.shadow').addClass('hide');
            }
            function addElement(){
                $('.modal,.shadow').removeClass('hide');
            }
            function cancelModal(){
                $('.modal,.shadow').addClass('hide');
                $('.modal input[type="text"]').val('');
                //点击添加后,取消上回残留数据
            }
            $('.edit').click(function () {
                $('.modal,.shadow').removeClass('hide');
                var tds =$(this).parent().prevAll();
                tds.each(function () {
                    //获取target的属性及内容var
                    n = $(this).attr('target');
                    var t = $(this).text();
    //                var a = '.modal input[name="';
    //                var b = '"]';
    //                var temp = a + n + b;
    //                $(temp).val(t);
                    $('.modal input[name="'+ n +'"]').val(t);
                    //此处使用了字符串拼接。
                });
    //            //console.log(tds);// prevAll从自己向上查找==》倒序
    //            //获得tds,获取td中的内容,赋值给input标签中的value
    //            var port = $(tds[0]).text();
    //            var host = $(tds[1]).text();
    //            $('.modal input[name="hostname"]').val(host);
    //            $('.modal input[name="port"]').val(port);
            })
        </script>
    </body>

- TAB切换示例:
    添加属性方式:
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            .hide{display: none;}
            .menu{height: 38px;background-color: #eeeeee;line-height: 38px;}
            .menu .menu-item{float: left;border-right: 1px solid red;padding: 0 5px;
            cursor:pointer;}
            .content{min-height: 100px;border: 1px solid #eeeeee;}
            .active{background-color: #2459a2}
        </style>
    </head>
    <body>
        <div style="width: 700px;margin: 0 auto">
            <div class="menu">
                <div class="menu-item active" a="1">菜单1</div>
                <div class="menu-item" a="2">菜单2</div>
                <div class="menu-item" a="3">菜单3</div>
            </div>
            <div class="content">
                <div b="1">内容1</div>
                <div class="hide" b="2">内容2</div>
                <div class="hide" b="3">内容3</div>
            </div>
        </div>
        <script src="jquery-1.12.4.js"></script>
        <script>
            $('.menu-item').click(function () {
                $(this).addClass('active').siblings().removeClass('active');
                var target = $(this).attr('a');
                $('.content').children('[b="'+target+'"]').removeClass('hide').siblings().addClass('hide');
            })
        </script>
    </body>    
    通过索引方式:
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            .hide{display: none;}
            .menu{height: 38px;line-height: 38px;}
            .menu .menu-item{float: left;border-right: 1px solid red;padding: 0 5px;
            cursor:pointer;}
            .content{min-height: 100px;border: 1px solid #eeeeee;}
            .active{background-color: #2459a2}
        </style>
    </head>
    <body>
        <div style="width: 700px;margin: 0 auto">
            <div class="menu">
                <div class="menu-item active" >菜单1</div>
                <div class="menu-item">菜单2</div>
                <div class="menu-item">菜单3</div>
            </div>
            <div class="content">
                <div >内容1</div>
                <div class="hide">内容2</div>
                <div class="hide">内容3</div>
            </div>
        </div>
        <script src="jquery-1.12.4.js"></script>
        <script>
            $('.menu-item').click(function () {
                $(this).addClass('active').siblings().removeClass('active');
                $('.content').children().eq($(this).index()).removeClass('hide').siblings().addClass('hide');
            })
        </script>
    </body>

- 添加删除复制标签示例:
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <input id='t1' type="text">
    <input id='a1' type="button" value="添加">
    <input id='a2' type="button" value="删除">
    <input id='a3' type="button" value="复制">
        <ul id="u1">
            <li>12345</li>
            <li>67890</li>
        </ul>
    <script src="jquery-1.12.4.js"></script>
    <script>
        $('#a1').click(function () {
            var v = $('#t1').val();
            var temp = "<li>" + v +"</li>";
            $('#u1').append(temp);
            //$('#u1').prepend(temp)
            //$('#u1').after(temp)
            //$('#u1').before(temp)
        });
        $('#a2').click(function () {
             var index = $('#t1').val();
             $('#u1 li').eq(index).remove();
            //$('#u1 li').eq(index).empty();
        });
        $('#a3').click(function () {
            var index = $('#t1').val();
            var v = $('#u1 li').eq(index).clone();
            $('#u1').append(v);
        });
    </script>
    </body>
    
    
- 点赞示例
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            .container{padding:50px;border:1px solid #dddddd;}
            .item{position: relative;width: 30px;}
        </style>
    </head>
    <body>
        <div class="container">
            <div class="item"><span>赞</span></div>
        </div>
        <script src="jquery-1.12.4.js"></script>
        <script>
            $('.item').click(function () {
                addFavor(this)
            });
            function addFavor(self){
                var fontSize = 10;
                var top = 10;
                var right = 10;
                var opacity = 1;
                //DOM对象
                var tag = document.createElement('span');
                $(tag).text('+1').css('color','red').css('position','absolute')
                        .css('fontSize',fontSize+'px').css('right',right+'px').css('top',top+'px').css('opacity',opacity);
                $(self).append(tag);

                var obj= setInterval(function () {
                    fontSize = fontSize + 5;
                    top = top - 5;
                    right = right - 5;
                    opacity = opacity - 0.1 ;
                    $(tag).css('fontSize',fontSize+'px').css('right',right+'px').css('top',top+'px').css('opacity',opacity);

                    if(opacity<0){
                        clearInterval(obj);
                        $(this).remove();
                    }
                },40)
            }
        </script>
    </body>

- 绑定方式示例    
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <input id='t1' type="text">
    <input id='a1' type="button" value="添加">
        <ul id="u1">
            <li>12345</li>
            <li>67890</li>
        </ul>
    <script src="jquery-1.12.4.js"></script>
    <script>
        $('#a1').click(function () {
            var v = $('#t1').val();
            var temp = "<li>" + v +"</li>";
            $('#u1').append(temp);
        });
    //    $('ul li').click(function () {
    //        var v = $(this).text();
    //        alert(v);
    //    })
    //    $('ul li').bind('click',function () {
    //        var v = $(this).text();
    //        alert(v);
    //    })
    //    $('ul li').on('click',function () {
    //        var v = $(this).text();
    //        alert(v);
    //    })
        $('ul').delegate('li','click',function () {
            var v = $(this).text();
            alert(v);
        })
    </script>
    </body>    
    
- 阻止事件发生示例
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <a onclick="return clickOn();" href="http://www.oldboyedu.com">走你1</a>
        <a id="i1" href="http://www.oldboyedu.com">走你2</a>
        <script src="jquery-1.12.4.js"></script>
        <script>
            function clickOn(){
                //clickOn()优先
                alert(123);
                return false;
                //绑定加return,后续事件不再继续,true则继续。
            }
            $('#i1').click(function(){
                // 无需加return
                alert(456);
                return false;
            })
        </script>
    </body>    
    
    
- 表单验证示例:
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            .error{color:red;}
        </style>
    </head>
    <body>
        <form id="f1" action="s111.html"method="POST">
            <div><input name="n1" tex='用户名' type="text"></div>
            <div><input name="n2" tex='密码' type="password"></div>
            <div><input name="n3" tex='邮箱' 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();
                    var n = $(this).attr('tex');
                    if(v.length <= 0){
                        flag = false;
                        var tag=document.createElement('span');
                        tag.className = 'error';
                        tag.innerHTML=n +'必填';
                        $(this).after(tag);
                        //return false;//取消这句后,页面不跳转,继续循环。
                        // return 终止整个循环,相当于break,后续不再验证了
                    }
                });
                return flag;
            });
    //        $(':submit').click(function () {
    //            var v = $(this).prev().val()
    //            if(v.length > 0 ){
    //                return true;
    //            }else{
    //                alert('请输入内容')
    //                return false
    //            }
    //        }) ;
        </script>
    </body>
    
- 页面框架加载完成之后,自动执行    
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            .error{color:red;}
        </style>
    </head>
    <body>
        <form id="f1" action="s111.html"method="POST">
            <div><input name="n1" tex='用户名' type="text"></div>
            <div><input name="n2" tex='密码' type="password"></div>
            <div><input name="n3" tex='邮箱' type="text"></div>
            <input type="submit"value="提交">
            <img src="..." alt="">
        </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();
                        var n = $(this).attr('tex');
                        if(v.length <= 0){
                            flag = false;
                            var tag=document.createElement('span');
                            tag.className = 'error';
                            tag.innerHTML=n +'必填';
                            $(this).after(tag);
                            //return false;//取消这句后,页面不跳转,继续循环。
                            // return 终止整个循环,相当于break,后续不再验证了
                        }
                    });
                    return flag;
                });
            });
    /*
            //当页面所有元素加载完毕后执行
            $(':submit').click(function () {
                $('.error').remove();
                var flag = true;
                $('#f1').find('input[type="text"],input[type="password"]').each(function () {
                    var v = $(this).val();
                    var n = $(this).attr('tex');
                    if(v.length <= 0){
                        flag = false;
                        var tag=document.createElement('span');
                        tag.className = 'error';
                        tag.innerHTML=n +'必填';
                        $(this).after(tag);
                        //return false;//取消这句后,页面不跳转,继续循环。
                        // return 终止整个循环,相当于break,后续不再验证了
                    }
                });
                return flag;
            });
            */
        </script>
    </body>    

posted @ 2019-12-23 21:59  badweather  阅读(142)  评论(0编辑  收藏  举报