分享

jquery UI autocomplete 在获取焦点得到显示列表

 蜗牛之窝 2015-03-04
在做项目的时候,客户有这样的需求,将以前输入过的内容,在某个文本框上用列表的形式提示出来,可以选择,换言之,就如同我们用谷歌搜索,或者百度搜索一样,输入一些关键词,会自动提示,这个功能就叫autocomplete. 当然在 jquery  UI  下有 插件,具体下载的地方,搜索就知道了。重点是,我现在的用法,是需要在文本框获取焦点的时候,就弹出待选择的列表。而传统的是必须在输入文字之后才出现。经过发现,jquery ui autocomplete 用如下方法可以实现
<!doctype html>
    
    jQuery UI Autocomplete - Categories
    
    
    
    
    
    
    
    
    
    .ui-autocomplete-category {
        font-weight: bold;
        padding: .2em .4em;
        margin: .8em 0 .2em;
        line-height: 1.5;
    }
    
    
        var data = [
            { label: "anders", category: "" },
            { label: "andreas", category: "" },
            { label: "antal", category: "" },
            { label: "annhhx10", category: "Products" },
            { label: "annk K12", category: "Products" },
            { label: "annttop C13", category: "Products" },
            { label: "anders andersson", category: "People" },
            { label: "andreas andersson", category: "People" },
            { label: "andreas johnson", category: "People" }
        ];
        
        
        
        function dynamicAutocomplete(){
          $("#search").autocomplete({
              delay:200,
              autoFocus: false,
            source: data,
            minLength: 0,
            }).focus(function () {
                $(this).autocomplete("search");
            });
        }
        
autocomplete 
Search: 
A categorized search result. Try typing "a" or "n".


代码来源于官网例子,稍稍改动了一下,但貌似在IE 下有点问题,选择某个选项之后,这个列表框不消失,还一直存在,比较郁闷。

*****************************************************

在google 上搜索了一下,发现了一篇文章,也讲到了这个问题。后来用如下方法解决,不过是失去焦点的方式做的。

function dynamicAutocomplete(){
            $("#search").autocomplete({
            minLength: 0,
            source: data,
                focus :function () {                     
                   return false;
                },
                select: function(event, ui){            
             $this = $(this);
            setTimeout(function () {               
                $this.blur();
               }, 1);
          }
            }).focus(function(){
                 $(this).autocomplete("search");
                 return false;
            }    
        );
    };


在ie 下面用了timeout 来解决,在网上看到很多人说,在focus  方法中 return false 就可以解决,但我就是没有测试成功.
原文地址:jquery UI autocomplete 在获取焦点得到显示列表, 感谢原作者分享。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多