3100+ Star!自动搜索补全的纯 JS 工具库

指针大冒险
• 阅读 1650

【导语】:一个纯 JS 的轻量级自动补全工具库。

3100+ Star!自动搜索补全的纯 JS 工具库

简介

autoComplete.js 是一个简单的、轻量级的、无其他依赖的 JS 自动补全工具库,它快速、功能丰富,并且可以与各种项目或系统无缝集成。它具有以下功能特性:

  • 纯JS语言编写
  • 无其他外部依赖
  • 简单易用
  • 轻量
  • 快速
  • 功能丰富
  • 高度可定制

3100+ Star!自动搜索补全的纯 JS 工具库

项目地址:

https://github.com/TarekRaafa...

安装

  • JSDELIVR CDN
// CSS文件  
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tarekraafat/autocomplete.js@8.3.2/dist/css/autoComplete.min.css">  
  
// JS文件  
<script src="https://cdn.jsdelivr.net/npm/@tarekraafat/autocomplete.js@8.3.2/dist/js/autoComplete.min.js"></script>  
  
  • cdnjs CDN
// CSS文件  
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tarekraafat-autocomplete.js/8.3.2/css/autoComplete.min.css">  
  
// JS文件  
<script src="https://cdnjs.cloudflare.com/ajax/libs/tarekraafat-autocomplete.js/8.3.2/js/autoComplete.min.js"></script>  
  • UNPKG CDN
// CSS文件  
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tarekraafat-autocomplete.js/8.3.2/css/autoComplete.min.css">  
  
// JS文件  
<script src="https://cdnjs.cloudflare.com/ajax/libs/tarekraafat-autocomplete.js/8.3.2/js/autoComplete.min.js"></script>  
  • HTML本地加载
<`script src="./autoComplete.js"></script>  
  • HTML本地ES6模块加载
<script src="./index.js" type="module"></script>  
  • ES6导入
import autoComplete from "./autoComplete";  
  • npm安装
npm i @tarekraafat/autocomplete.js  
  • yarn安装
yarn add @tarekraafat/autocomplete.js  
  • Node引用
const autoComplete = require("@tarekraafat/autocomplete.js/dist/js/autoComplete");  

使用

  1. 将CSS放到HEAD标签内
<link rel="stylesheet" href="./css/autoComplete.css">  
OR  
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tarekraafat/autocomplete.js@8.3.2/dist/css/autoComplete.min.css">  
  1. 将默认id值autoComplete分配给input元素或任何自定义的id/class,并在selector中选中自定义的元素。参考第4步
<input id="autoComplete" tabindex="1">    <!-- Default "id" value = "autoComplete"> -->  
  1. 将autoComplete.js或个人的js文件放到BODY标签内
<script src="./js/autoComplete.min.js"></script>  
<script src="./js/index.js"></script>  
OR  
<script src="https://cdn.jsdelivr.net/npm/@tarekraafat/autocomplete.js@8.3.2/dist/js/autoComplete.min.js"></script>  
<script src="./js/index.js"></script>  
  1. 创建autoComplete引擎示例,并添加配置
new autoComplete({  
    data: {                              // Data src [Array, Function, Async] | (REQUIRED)  
      src: async () => {  
        // API key token  
        const token = "this_is_the_API_token_number";  
        // User search query  
        const query = document.querySelector("#autoComplete").value;  
        // Fetch External Data Source  
        const source = await fetch(`https://www.food2fork.com/api/search?key=${token}&q=${query}`);  
        // Format data into JSON  
        const data = await source.json();  
        // Return Fetched data  
        return data.recipes;  
      },  
      key: ["title"],  
      cache: false  
    },  
    query: {                             // Query Interceptor               | (Optional)  
          manipulate: (query) => {  
            return query.replace("pizza", "burger");  
          }  
    },  
    sort: (a, b) => {                    // Sort rendered results ascendingly | (Optional)  
        if (a.match < b.match) return -1;  
        if (a.match > b.match) return 1;  
        return 0;  
    },  
    placeHolder: "Food & Drinks...",     // Place Holder text                 | (Optional)  
    selector: "#autoComplete",           // Input field selector              | (Optional)  
    observer: true,                      // Input field observer | (Optional)  
    threshold: 3,                        // Min. Chars length to start Engine | (Optional)  
    debounce: 300,                       // Post duration for engine to start | (Optional)  
    searchEngine: "strict",              // Search Engine type/mode           | (Optional)  
    resultsList: {                       // Rendered results list object      | (Optional)  
        container: source => {  
            source.setAttribute("id", "food_list");  
        },  
        destination: "#autoComplete",  
        position: "afterend",  
        element: "ul"  
    },  
    maxResults: 5,                         // Max. number of rendered results | (Optional)  
    highlight: true,                       // Highlight matching results      | (Optional)  
    resultItem: {                          // Rendered result item            | (Optional)  
        content: (data, source) => {  
            source.innerHTML = data.match;  
        },  
        element: "li"  
    },  
    noResults: (dataFeedback, generateList) => {  
        // Generate autoComplete List  
        generateList(autoCompleteJS, dataFeedback, dataFeedback.results);  
        // No Results List Item  
        const result = document.createElement("li");  
        result.setAttribute("class", "no_result");  
        result.setAttribute("tabindex", "1");  
        result.innerHTML = `<span style="display: flex; align-items: center; font-weight: 100; color: rgba(0,0,0,.2);">Found No Results for "${dataFeedback.query}"</span>`;  
        document.querySelector(`#${autoCompleteJS.resultsList.idName}`).appendChild(result);  
    },  
    onSelection: feedback => {             // Action script onSelection event | (Optional)  
        console.log(feedback.selection.value.image_url);  
    }  
});  
  1. 属性配置信息
  • data:表示数据源,键,缓存和结果集,值为

    • 1-src:字符串或对象数组;或者返回字符串或对象数组的函数,Function() => {}
    • 2-key:如果src是对象,key是必须的,用于解析对象
    • 3-Cache:静态数据设置为true,动态数据设置为false
    • 4-Result:list,字符串或对象数据
  • query:查询拦截器

    • 只有一个方法manipulate,参数是查询的对象,拦截查询对象做个性化开发
  • sort:对结果集排序

    • 函数,对结果集排序,返回1,-1,0
  • selector:输入框选择器,选择需进行自动补全的元素:

    • id或class字符串
    • 或者一个查询返回html元素的函数
  • 以上只是列出了比较重要的几个配置属性,详细的说明参考官网
  1. 生命周期函数
  • init:初始化autoComplete引擎后触发
  • fetch:获取数据完成后触发
  • input:用户每次输入时触发
  • results:搜索完成准备就绪后触发
  • rendered:渲染结果列表后触发
  • navigation:在每个resultList结果交互上触发
  • unInit:初始化autoComplete引擎前触发
  1. 例子

官方提供了例子供参考,地址为:https://tarekraafat.github.io...

3100+ Star!自动搜索补全的纯 JS 工具库

支持以下浏览器:

3100+ Star!自动搜索补全的纯 JS 工具库

开源前哨 日常分享热门、有趣和实用的开源项目。参与维护 10万+ Star 的开源技术资源库,包括:Python、Java、C/C++、Go、JS、CSS、Node.js、PHP、.NET 等。
点赞
收藏
评论区
推荐文章
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
3年前
Electron中使用sql.js操作SQLite数据库
推荐sql.js——一款纯js的sqlite工具。!(https://img2018.cnblogs.com/blog/695215/201911/69521520191129015019462314666666.jpg)一、关于sql.jssql.js(https://github.com/kripken/sq
Wesley13 Wesley13
3年前
vscode代码自动补全失效
前段时间,朋友说自己的vscode突然出现了代码不能自动补全的问题(主要是js,其他语言也可以参考)症状表现为,刚打开vscode有自动补全,过了一会,突然就没了,反反复复解决过程也是相当坎坷了开始其实就解决了,推测是插件引起的冲突,只不过以为失败了,而且开始只设想到了vscode的扩展插件。新建了一个文件夹,新建一个js文件,这
Stella981 Stella981
3年前
Linux下非常强大的MySQL命令行客户端工具(支持自动补全)
01 摘要,支持语法高亮当你输入SQL关键字,数据库的表格和列时可自动补全。智能补全(默认启用),会提示文本感应的(contextsensitive)补全。02安装,Linux下,一行命令搞定pipinstallmycli补充,
Wesley13 Wesley13
3年前
Java分析神器
Arthas简介Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。Arthas支持JDK6,支持Linux、Mac、Windows,采用命令行交互模式,同时提供丰富的Tab自动补全功能,进一步方便进行问题的定位和诊断。Arthas能帮你解决的问题
Wesley13 Wesley13
3年前
HTML 常用快捷方式
tab补全所有标签元素1.在编辑器中输入元素名称,即可自动补全生成HTML标签,即使不是标准的HTML标签。2.输入:!或者html:5或者html:4s或者html:4t将自动补全html基本结构嵌套操作1.使用“”生成子元素//输入div
Wesley13 Wesley13
3年前
ES实现自动补全
什么是自动补全随用户输入,给与提示信息,如下图:!(https://oscimg.oschina.net/oscnet/up0723269940389c9db1b73d96584e0b8f921.png)ES实现原理
流浪剑客 流浪剑客
1年前
GoLand 2023.2.4汉化版 附 完整安装教程 支持M1
是一款专门为Go语言开发者打造的集成开发环境(IDE)。它能够提供一系列功能,如代码自动完成、语法高亮、代码格式化、代码重构、代码调试等等,使编写代码更加高效和舒适。GoLand的特点包括:1.智能代码补全:GoLand能够根据上下文自动补全代码,包括函数
流浪剑客 流浪剑客
1年前
go语言集成开发工具:GoLand 2023 for Mac中文版
是一款专门为Go语言开发者打造的集成开发环境(IDE)。它能够提供一系列功能,如代码自动完成、语法高亮、代码格式化、代码重构、代码调试等等,使编写代码更加高效和舒适。GoLand的特点包括:1.智能代码补全:GoLand能够根据上下文自动补全代码,包括函数
铁扇公主 铁扇公主
1年前
Mac电脑Ruby代码编辑器推荐 RubyMine 2023激活码中文
RubyMine2023是一款功能强大、易于使用的IDE,适用于需要进行Ruby和Rails开发的开发者。它提供了全面的支持,能够帮助开发者更加高效地进行编程。RubyMine2023的主要特点包括:代码编辑与自动补全:提供强大的代码编辑和自动补全功能,可
绣鸾 绣鸾
1年前
GoLand 2023 for Mac GO语言集成开发工具
是一款专门为Go语言开发者打造的集成开发环境(IDE)。它能够提供一系列功能,如代码自动完成、语法高亮、代码格式化、代码重构、代码调试等等,使编写代码更加高效和舒适。GoLand的特点包括:1.智能代码补全:GoLand能够根据上下文自动补全代码,包括函数