前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jQuery -- Autocomplete

jQuery -- Autocomplete

作者头像
用户7293182
发布2022-01-06 13:48:45
9910
发布2022-01-06 13:48:45
举报
文章被收录于专栏:jQuery每日经典jQuery每日经典

Autocomplete 顾名思义就是自动完成,在 input 框中输入内容时,将会自动补全符合输入内容的信息。

官方链接及使用说明:

https://github.com/ArtemFitiskin/jquery-autocompleter

使用方法:

Scripts:

代码语言:javascript
复制
<script src="js/jquery.js" type="text/javascript"></script>
<script src="js/jquery.autocompleter.min.js" type="text/javascript"></script>
Styles:
代码语言:javascript
复制
<link rel="stylesheet" href="css/jquery.autocompleter.css">

使用:例一

代码语言:javascript
复制
$(function () {
    $('input').autocompleter({ source: 'path/to/get_data_request' });
});

例二

代码语言:javascript
复制
var data = [
{ 'value': '1', 'label': 'one' },
{ 'value': '2', 'label': 'two' },
{ 'value': '3', 'label': 'three' }
];$(function () {    $('input').autocompleter({ source: data });
});

想体验用法的可以走下面链接:

http://www.jq22.com/yanshi438

原理

看了以下图片就能明白是怎么实现的了。

以下内容基于图片进行讲解

重点翻译一下参数和方法

名字 -- 类型 -- 解释 -- 默认值

  1. source -- str,obj -- url或者本地对象 -- null
  2. empty -- 布尔 -- 如果值为空时展开 -- true 注:在默认情况下,当input获得焦点时也获取内容。设置为false,则不会显示内容。
  3. limit -- int -- 显示多少条结果 -- 10
  4. customClass -- array -- 为div添加class数组 -- [] 注:顺序添加class。样式重复时,后面的class样式会覆盖前面的
  5. cache -- bool -- 保存数据到本地存储来避免XHR请求重复 -- true
  6. cacheExpires -- int -- 设置缓存生命周期 -- 86400
  7. focusOpen -- bool -- 当光标获得焦点时展开 -- true 注:focusOpen是empty的一种特殊情况
  8. hint -- bool -- 将满足条件的第一个选项单独拿出来 -- false 如图:
  1. selectFirst -- bool -- 如果设置为true,第一个选项将自动匹配 -- false 如图:

比较和hint的区别,若为true,则忽略changeWhenSelect

  1. changeWhenSelect -- bool -- 是否允许使用上下箭头切换选中值 -- true
  2. highlightMatches -- bool -- 匹配的字符加粗 -- false 如图:

即添加 strong 标签

  1. ignoredKeyCode -- array -- 忽略哪些键盘按键 -- []
  2. customLabel -- str -- The name of object's property which will be used as a label -- false
  3. customValue -- str -- The name of object's property which will be used as a value -- false
  4. template -- str -- 自定义列模板 -- false 例如: <span>{{ label }} is {{ customPropertyFromSource }}</span>
  5. offset -- str -- Source response offset -- false
  6. combine -- function -- 返回一个可扩展的Ajax数据对象 $.noop
  7. callback -- function -- 回调函数,参数(value,index) -- $.noop

详细参数意义参考网页:

https://github.com/ArtemFitiskin/jquery-autocompleter

jQuery空函数

$.noop是 jQuery 中的一个空函数,源码如下:

方法:

调用源码时比较特殊。

插件中有个publics 的JSON对象中,存放着所有的方法。如图:

入口则是这样定义的:

所以方法的调用都是这样的:

$(...).autocomplete('open');

$(...).autocomplete('destory');

......

1. defaults(opt), 设置默认值

2. options(properties), 插件定义后,修改插件的参数。

例如:

代码语言:javascript
复制
$('#input').autocompleter('option', {
limit: 5,
template: '<img src="{{ image }}" alt="Image for autocompleter list item" /> {{ label }}'
});

3. open(), 打开选项

4. close(), 关闭选项

5. clearCache(), 清除缓存

6. destory() 删除插件

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-08-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 jQuery每日经典 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Styles:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档