前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >轻量、便捷、令人惊艳的自动补全插件!

轻量、便捷、令人惊艳的自动补全插件!

作者头像
程序员老鱼
发布2023-08-10 10:13:19
4070
发布2023-08-10 10:13:19
举报
文章被收录于专栏:前端实验室

大家好,我是「前端实验室」爱分享的了不起~

自动补全插件是现代网页应用中不可或缺的一部分。了不起昨天刚完成了一项输入部分内容,立即自动补全内容的功能。

这里为大家分享我使用的自动补全插件: Awsomplete,并深入探讨它的使用方法和强大功能。

简介

Awsomplete是一款简洁而强大的自动补全插件。它具有高效的性能和用户友好的界面,适用于各种网页应用。

特点

关于自动补全,你一定听说过其他的解决方案,如 jQuery UI Autocomplete,但这样的方案实在是太笨重了。

Awsomplete却别具一格,拥有如下特征:

  • 轻量级:Awsomplete非常轻量,压缩版本只有约2KB,这使得它成为一个理想的选择,即使在网络速度较慢的情况下也能保证快速加载和响应。
  • 简单易用:Awsomplete提供简单而直观的API,使得开发者可以很容易地集成到他们的应用中。只需几行代码,即可实现自动补全功能。
  • 定制性强:Awsomplete提供了多种选项和自定义功能,开发者可以定制插件的外观和行为,以适应不同的设计需求。
  • 支持键盘导航:Awsomplete支持键盘导航,用户可以使用上箭头和下箭头来浏览自动补全选项,并通过回车键选中所需选项。
  • 多个数据源:Awsomplete支持多个数据源,开发者可以从不同的地方提取数据,并将其用于自动补全功能。

基本使用

在使用Awsomplete前,必须引入必要文件:awesomplete.cssawesomplete.js

代码语言:javascript
复制
<link rel="stylesheet" href="awesomplete.css" />
<script src="awesomplete.js" async></script> 

接着创建输入框:在HTML中创建一个输入框,用于用户输入。

代码语言:javascript
复制
<input class="awesomplete"
   data-list="Ada, Java, JavaScript, Brainfuck, LOLCODE, Node.js, Ruby on Rails" />

这是最简单的用法,已经完成啦!任何JS都不需要了~

ps:注意标签中的 class 类名 awesomplete,和 data-list 属性的使用!

由于data-list 属性不是所有的浏览器都支持,且上面的使用方式不够动态化,我们需要定制我们自动补全的代码。

进阶使用

在进阶的使用过程中,我们首先要初始化插件。重新来个例子。

代码语言:javascript
复制
<input id="myinput" />
<ul id="mylist">
 <li>Ada</li>
 <li>Java</li>
 <li>JavaScript</li>
 <li>Brainfuck</li>
 <li>LOLCODE</li>
 <li>Node.js</li>
 <li>Ruby on Rails</li>
</ul>

使用JavaScript初始化Awsomplete插件,并将输入框作为参数传入。

代码语言:javascript
复制
var input = document.getElementById("myinput");
new Awesomplete(input, {list: document.querySelector("#mylist")});

关于初始化的数据,我们也可以使用数组来表示。

代码语言:javascript
复制
new Awesomplete(input, {
 list: ["Ada", "Java", "JavaScript", "Brainfuck", "LOLCODE", "Node.js", "Ruby on Rails"]
});

这时,我们使用的是元素选择器来指向我们要控制的html元素,方便多了!

设置选项和方法这个部分才是我们定制化的主要配置。

Awsomplete 提供了几个基本属性:minChars , maxItems和autoFirst。用于触发自动补全的最少字符设置,自动补全可选条目数等。

代码语言:javascript
复制
var awesomplete = new Awesomplete(input, {
  minChars: 1,
  maxItems: 5,
  autoFirst: true
});

另外还有其他扩展属性。了不起在实践中用到了下面这几个。

  • replace属性控制用户的选择如何替换用户的输入。

[这个功能很重要!] 看看这个例子。

代码语言:javascript
复制
new Awesomplete(input, {
 list: [
  { label: "Belarus", value: "BY" },
  { label: "China", value: "CN" },
  { label: "United States", value: "US" }
 ],
 // insert label instead of value into the input.
 replace: function(suggestion) {
  this.input.value = suggestion.label;
 }
});

备选的数据可以是对象,你可以自定义自动补全的数据是对象中的某个属性——这样呈现的数据更灵活!

  • filter属性控制条目的匹配方式。
代码语言:javascript
复制
function myFilterFunc(text, input) {
  return text.indexOf(input) > -1;
}
var awesomplete = new Awesomplete(input, {
  filter: myFilterFunc
});
  • sort属性控制列表项的排序方式。

它的回调与Array.prototype.sort()函数具有相同的原型。

代码语言:javascript
复制
function mySortFunc(text, input) {
  return text < input;
}
var awesomplete = new Awesomplete(input, {
  sort: mySortFunc
});

其他

Awsomplete 还提供了其他关于事件监听的方法和API。这里就不一一例举了。大家访问下方地址进行查阅吧!

官方地址:https://projects.verou.me/awesomplete/

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

本文分享自 前端实验室 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 特点
  • 基本使用
  • 进阶使用
  • 其他
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档