前端学习Web前端之路程序员

类似百度搜索文本框效果—自动补全+功能扩展

2016-05-25  本文已影响3359人  webCoder

用过百度或者其他搜索站点的人,一定都看到过下面的效果。

百度.gif
  1. 在文本框中输入一个字母,在文本框下方会出现一个提示文字列表,列出了几个包含该字母的关键词;
  2. 再继续输入,提示的文字列表中的关键词更加精确;

下面是这个插件的各种用法

jquery.min.js
jquery-ui.min.js
jquery-ui.min.css
说明:初始化数据,后期只是在第一次数据的范围内补全填充
code: 
 html:
  <div class="ui-widget">
  <label for="tags">标签:</label>
  <input id="tags">
</div>
 js:
$(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
    });
  });
缺点:
  1. 数据需要第一次就全部传来,但是如果我们初始化数据有2000条,我不可以一次性查出来,赋值给数据源数组;
  2. 下面的场景就不能实现:我们需要用户选择公司现有的员工姓名,虽然文本框中显示的是用户名,但是我们需要同时将该员工的id赋值给文本框的一个属性(虽然用户看不到);
  3. 如果有同名的员工,用户在下拉选择时如何确定选哪一个呢?
  1. 文本框下出现的自动补全列表中,自定义显示格式,比如姓名+手机号或者职位名称等等;
效果:
综合解决方案.gif
你看:
  1. 自动补全的是用户名+手机号;
  2. 选择后,用户id也赋值给了文本框的某个属性;
  3. 当然通过监听文本框的keydown事件,也实现了数据源的更新;

具体代码就不贴出来了,方案就是上面说的思路。实现需要依赖jquery-ui-autocomplete的这个扩展

上一篇 下一篇

猜你喜欢

热点阅读