前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jQuery实现用户输入自动完成功能

jQuery实现用户输入自动完成功能

作者头像
Sindsun
发布2019-12-10 18:05:05
1.6K0
发布2019-12-10 18:05:05
举报
文章被收录于专栏:狂码一生狂码一生

利用jQuery UI中Auto-complete插件实现输入自动完成功能,大家在使用诸如淘宝、京东等电商平台搜索商品时,往往只要输入商品的一些特殊字符,就可以显示出和该字符相近的列表菜单,用户使用鼠标或者键盘方向键就可以快速选择,实现了很好的用户体验。

1.最简单的用户输入自动完成

<!doctype html>
<html>

<head>
    <meta charset="utf-8">
    <title>jQuery UI Autocomplete - Default functionality</title>
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
    <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
    <script src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
    <script>
        $(function() {
            //定义并初始化字典库数据源集合
            var availableTags = [
              "ActionScript", 
              "AppleScript", 
              "Asp", 
              "BASIC", 
              "C", 
              "C++", 
              "Clojure", 
              "COBOL", 
              "ColdFusion", 
              "Erlang", 
              "Fortran", 
              "Groovy", 
              "Haskell", 
              "Java", 
              "JavaScript", 
              "Lisp", 
              "Perl", 
              "PHP", 
              "Python", 
              "Ruby", 
              "Scala", 
              "Scheme"];
            //自动完成插件函数
            $("#tags").autocomplete({
                //自动完成字典库数据源
                source: availableTags
            });
        });
    </script>
</head>

<body>
    <div>
        <label for="tags">请输入:</label>
        <input id="tags">
    </div>
</body>

</html>

2 使用远程数据源自动完成

Auto-complete插件不光可以实现本地数据源的自动完成,也可以读取远程的数据源,列如实现从服务器端读取数据源信息。 通过将服务器数据缓存到浏览器中,获取的数据源首先保存在cache变量中。

$(function() {
    //自定义缓存变量
    var cache = {};
    //自动完成插件函数
    $("#tags").autocomplete({
        //定义用户最少输入的字符数
        minLenght: 2,
        source: function(request, response) { //定义远程获取数据源函数
            var term = request.term; //定义用户请求信息变量
            if (term in cache) { //判断请求数据是否存在缓存中
                response(cache[term]); //真,从缓存中读取数据
                return;
            }
            $.getJSON('data.json', request, function(data, Status, xhr) {
                cache[term] = data.result; //缓存远程数据
                response(data.result);
            });
        }
    });
});

最后完成的效果和下面淘宝中的一样:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.最简单的用户输入自动完成
  • 2 使用远程数据源自动完成
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档