• input事件在进行模糊搜索时,用到的即时监测input的值变化的方法(即时搜索的input和propertychange方法)


    做搜索功能的时候,经常遇到输入框检查的需求,最常见的是即时搜索,今天好好小结一下。

    即时搜索的方案:

    (1)change事件    触发事件必须满足两个条件:

    a)当前对象属性改变,并且是由键盘或鼠标事件激发的(脚本触发无效)
    b)当前对象失去焦点(onblur)
     (2)keypress  恩,还好。。。。。就是能监听键盘事件,鼠标复制黏贴操作他就无能为力的赶脚了。。。。。
     (3)propertychange(ie)和input事件
    input是标准的浏览器事件,一般应用于input元素,当input的value发生变化就会发生,无论是键盘输入还是鼠标黏贴的改变都能及时监听到变化

    propertychange,只要当前对象属性发生改变。

    比如一个input输入文字后出现下拉框,如图:

    当输入框里面内容为空时,下拉框要隐藏,可以通过input和propertychange方法实现,代码如下:

    [javascript] view plain copy
     
    1. <script>  
    2. $("#search").bind("input propertychange",function(){  
    3.     var value=$(this).val();  
    4.     if(value){  
    5.         $(".pc_search ul").show();  
    6.     }else{  
    7.         $(".pc_search ul").hide();  
    8.     }  
    9. });  
    10. </script>  

    这里bind同时绑定了input和propertychange两个方法。

    自己项目的例子

    //input输入框改变时
        $("input[id='search-input']").bind('input propertychange', function() {
            var val = $(this).val();
            val = val.replace(/s/g, '');
            /*var arr = val.split(''+query+'');
            console.log(arr);
            if(val==query){
                return false;
            }*/
            $(".re-search-tips").children('li').remove();
            if (val !== "") {
                $(".re-del").removeClass('disnone');
            }
            if (val == "" && query !== "") {
                $(".re-search-tips").children('li').remove();
                $(".re-search-tips li:contains('" + query + "')").html($(".re-search-tips li:contains('" + query + "')").html().replace(new RegExp('<span>' + query + '</span>', 'g'), '' + query + ''));
            }
            search(val);
        });
    //搜索教练
    function search(val) {
        query = val;
        temp = query;
        if (query !== "") {
            $.ajax({
                async: false,
                url: getv1 + 'schedule/coachs',
                type: 'GET',
                dataType: 'json',
                data: { query: query },
                success: function(res) {
                    var qulen = res.data.length;
                    if (qulen > 0) {
                        var qulist = "";
                        for (var m = 0; m < qulen; m++) {
                            var conume = res.data[m].coachNum;
                            var name = res.data[m].name;
                            qulist += '<li><a href="subinfo.html?conum=' + conume + '">' + name + '</a></li>';
                        }
                        $(".re-search-tips").append(qulist);
                        var lilen = $(".re-search-tips").children('li').length;
                        console.log(lilen);
                        for(var q=0 ;q<lilen;q++){
                            $(".re-search-tips li:eq('"+q+"'):contains('" + query + "')").html($(".re-search-tips li:eq('"+q+"'):contains('" + query + "')").html().replace(new RegExp(query, 'g'), '<span>' + query + '</span>'));
                        }
                       /* $(".re-search-tips li:contains('" + query + "')").html($(".re-search-tips li:contains('" + query + "')").html().replace(new RegExp(query, 'g'), '<span>' + query + '</span>'));*/
                    }
                },
                error: function() {
                    layer.msg("服务器正忙碌,请稍后再试");
                }
            });
        }
    }
    
    //删除input框里面的值
    function del() {
        $("input[id='search-input']").val("");
        $(".re-search-tips").children('li').remove();
        $(".re-search-tips li:contains('" + query + "')").html($(".re-search-tips li:contains('" + query + "')").html().replace(new RegExp('<span>' + query + '</span>', 'g'), '' + query + ''));
    }
    

      

  • 相关阅读:
    JavaWeb核心编程之(四.1)JSP
    一起来说 Vim 语
    你应该知道的基础 Git 命令
    Git 系列(五):三个 Git 图形化工具
    Git 系列(四):在 Git 中进行版本回退
    Git 系列(三):建立你的第一个 Git 仓库
    Git 系列(二):初步了解 Git
    Git 系列(一):什么是 Git
    JavaWeb核心编程之(三.6)HttpServlet
    多线程:子线程执行完成后通知主线程
  • 原文地址:https://www.cnblogs.com/yesu/p/7412061.html
Copyright © 2020-2023  润新知