有没有办法让 HTML5 数据列表使用模糊搜索?

2024-02-07

我有一组数据列表选项,我想在搜索时进行模糊匹配。例如,如果我输入“PHP HTML”或“PHPAndHTML”,我希望其中任何一个与“PHP And HTML”选项匹配。有什么办法可以做到这一点吗?请参见这把小提琴 https://jsfiddle.net/92jntaxg/或以下代码为例。

<h1>Datalist Demo</h1>
<label for="default">Pick a programming language</label>
<input type="text" id="default" list="languages">
<datalist id="languages">
    <option value="HTML">
    <option value="CSS">
    <option value="JavaScript">
    <option value="Java">
    <option value="Ruby And Go">
    <option value="PHP And HTML">
    <option value="Go">
    <option value="Erlang">
    <option value="Python And C++">
    <option value="C">
    <option value="C#">
    <option value="C++">
</datalist>

我想使用本机数据列表而不是自定义库来完成此操作。原因是,在我的现实场景中,我的页面上有数百个输入,它们都使用相同的数据列表,并且使用自定义库,它变得非常 CPU 密集型,而如果我将所有输入绑定到单个数据列表,它实际上非常密集高效的。


数据列表匹配行为不可自定义。

即使您尝试强制下拉列表可见,它也不会。

$(document).on('keyup', '#default', function() {
  let val = this.value.split(/[\s]+|(?=[A-Z][a-z])|(?<=[a-z])(?=[A-Z])/),
    reg = '';
  val.forEach(function(entry) {
    if (entry != '')
      reg += '.*' + entry + '.*'
  });

  var datalist = $('#languages option');
  $.each(datalist, function(i) {
    var option = datalist[i].value;
    if (!option.match(reg)) {
      $(datalist[i]).hide()
    } else {
      $(datalist[i]).show()
      $('#languages').show()
      console.log(datalist[i].value)
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.js" integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc=" crossorigin="anonymous"></script>
<h1>Datalist Demo</h1>
<label for="default">Pick a programming language</label>
<input type="text" id="default" list="languages">
<datalist id="languages" open="open">
    <option value="HTML">
    <option value="CSS">
    <option value="JavaScript">
    <option value="Java">
    <option value="Ruby And Go">
    <option value="PHP And HTML">
    <option value="Go">
    <option value="Erlang">
    <option value="Python And C++">
    <option value="C">
    <option value="C#">
    <option value="C++">
</datalist>

请随意测试上面的代码,当您键入时,会根据正则表达式显示/隐藏正确的值。但数据列表不可见。

另一个答案据说做了类似的事情,但即使这个答案也不起作用,以证明我的观点。https://stackoverflow.com/questions/42592978/how-to-make-datalist-match-result-from-beginning-only https://stackoverflow.com/a/42593258/9942418

如果您想拥有可定制的行为,我建议您在这个特定的用例中依赖插件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法让 HTML5 数据列表使用模糊搜索? 的相关文章

  • HTML5 MediaSource 适用于某些 mp4 文件,但不适用于其他文件(相同的编解码器)

    我正在玩 MediaSource API 代码直接取自 Mozilla 的示例页面 https developer mozilla org en US docs Web API MediaSource endOfStream https d
  • Chrome 扩展程序在代码中使用 client_secret

    我正在开发具有自己的 oAuth 授权的 Google Chrome 扩展 当然 我必须使用 client id 和 client secret 作为请求令牌 有什么办法可以向用户隐藏这些数据吗 由于此请求只是 javascript 源代码
  • 使用 CSS 或 Javascript 填充动画

    我只是想知道是否可以使用 CSS 或 javascript 创建填充动画 基本上我想创建一个填充动画 如下图所示 http i40 tinypic com eit6ia png http i40 tinypic com eit6ia png
  • 网站的主体和元素固定在 980px 宽度上,不会缩小

    我试图在 Rails 应用程序顶部启动前端 仅 HTML CSS 页面 但在使用 320px 视口时遇到问题 有些元素不会按比例缩小 我不明白为什么 我已经完成了检查元素 为各种元素提供了max width 100 and or width
  • 使用输入类型 = 文件捕获照片时移动 safari 崩溃

    我正在使用输入类型文件在 iOS 中启动相机 我正在使用以下代码行
  • 为什么我们在打字稿中使用 HTMLInputElement ?

    我们为什么使用 document getElementById ipv as HTMLInputElement value 代替 document getElementById ipv value 功能getElementById返回具有类
  • DataTables row.add 到特定索引

    我正在替换这样的行项目 var targetRow entity row dataTable targetRow closest table dataTable DataTable dataTable row targetRow remov
  • Jquery一键提交多个同名表单

    我有动态创建的循环表单 我需要一键提交所有表单 我正在遵循下面的代码 你能建议我怎么做吗 谢谢
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • 代码镜像错误:未捕获错误:扩展集中无法识别扩展值([对象对象])

    全部 我目前正在从事一个React Electron项目 该项目的目标是完成一个Markdown编辑器 当我配置codemirror 该程序报告错误说 Uncaught Error Unrecognized extension value
  • 使用css bootstrap时如何仅向一列添加右边框?

    我正在尝试使用CSS引导框架 http getbootstrap com css tables在我的项目中 我正在使用带有以下类的表table table bordered table striped 我想删除除第一列之外的所有列的边框 这
  • 表格行未扩展到全宽

    我有一个表格 当我将表格的宽度设置为 100 并将表格行的宽度设置为 100 时 没有任何反应或宽度发生变化 Table Normal position relative display block margin 10px auto pad
  • Chrome//kendoUI/jQuery:超出最大调用堆栈大小

    我正在使用 hottowell 模板来创建 spa 应用程序 并且我从 jquery 中收到了一个很好的错误 基本上我的问题从此刻开始尝试绑定我的视图 viewModelBinder js 来自 durandal 库 viewModelBi
  • 如何使用 crypto-js 解密 AES ECB

    我正在尝试将加密数据从 flash 客户端 发送到服务器端的 javascript 在 asp 中作为 jscript 运行 有几个 javascript Aes 库 但它们实际上没有文档记录 我正在尝试使用 crypto js 但无法让代
  • 如何用另一个响应替换窗口的 URL 哈希?

    我正在尝试使用替换方法更改哈希 URL document location hash 但它不起作用 function var anchor document location hash this returns me a string va
  • Javascript Replace() 和 $1 问题

    我正在尝试创建一个脚本来搜索文本中的模式并在它找到的字符串周围包裹一个标签 shop attributes td each function this html function i html return html replace E 0
  • 从 FileReader 设置背景图像样式

    我正在寻找一种解决方案 允许我从文件上传输入中获取文件并通过设置 document body style backgroundImage 来预览它 以下代码用于在 Image 元素中显示预览 function setImage id tar
  • Vue.js[vuex] 如何从突变中调度?

    我有一个要应用于 json 对象的过滤器列表 我的突变看起来像这样 const mutations setStars state payload state stars payload this dispatch filter setRev
  • CSS溢出文本显示在几行中,没有断字

    我有一些长文本显示在 div 中 该 div 具有固定的宽度和高度 我希望文本显示在几行上 作为 div 高度 并且句子单词不会中断 一行中的单词前缀和下一行中的继续 此外 我想在末尾添加省略号最后一句话 CSS white space n
  • 循环内的异步性

    我正在使用 jQuery getJSON 用于从一组实用程序的给定 URL 检索数据的 API 我真的很想找到一种为每个实用程序重用代码 完全相同 的方法 由于循环的执行与 ajax 调用无关 因此我无法找到保留循环值的方法 我知道这个描述

随机推荐

  • 原型继承最佳实践?

    我刚刚接触 JavaScript 并试图了解原型继承 似乎有多种方法可以达到相同的效果 所以我想看看是否有任何最佳实践或理由以一种方式做事而不是另一种方式 这就是我要说的 Method 1 function Rabbit this name
  • 2页出现死锁

    我正在解决在生产环境中看到的一些死锁 我对此很陌生 但有些事情对我来说似乎很奇怪 所以我有下面的死锁图 死锁的右侧是更新 如下所示 UPDATE order sub line SET sub line status 300 WHERE or
  • 从 C# 调用方中的非托管 DLL 捕获标准输出

    我有一个 C 应用程序通过一些 C CLI 编组代码调用本机 C DLL C gt C CLI gt C 无 CLR 我希望 DLL 在运行时将字符串更新发送回调用应用程序 目前 非托管 DLL 将输出写入 stdout 本质上我需要在 U
  • AngularJs 将 HTML 中每个 ng-repeat 的实例传递给指令

    我认为这应该很简单 但我错过了一些东西 我怎样才能通过flowObj in my ng repeat下面是我的指令 我想将它传递给我的指令 然后单击 使用它FlowObj 然后应用一些逻辑 我尝试在我的指令中使用注释代码 scope tes
  • Ruby:为什么我不能创建新文件?

    我正在尝试创建一个 json 文件并写入它 我的代码如下所示 def save as json object f File new file json f puts object to json w f close end save as
  • android-support-v4 删除未使用的类

    实际上 我正在尝试将应用程序的 apk 缩小到尽可能小的大小 我目前导入了 android support v4 jar 文件 我的问题是 如何从此 jar 文件中删除未使用的类 经过一番搜索后没有找到任何信息 如果 ProGuard 是解
  • 如何使用 Salt 创建 SHA256 哈希?

    我目前正在开发一个 Visual Studio C Windows 窗体项目 但是 我对 SHA256 salted 的工作原理感到困惑 我在网上找到了一些例子 但无法理解如何调用这个函数 我想在连接到数据库 Microsoft Acces
  • 如何在 ag-grid 表的页脚中启用或显示总行数

    我正在使用 Ag Grid 表 我想在表的页脚中显示总行 我如何通过使用 2 个表来实现它 第 1 个表用于实际数据 第 2 个表用于总计行 它与普通的不可滚动表格一起工作正常 但如果它是固定或可滚动表格 则顶部表格会滚动 但底部表格会粘在
  • 在 HashMap 或 LinkedList 中将嵌套类设为静态的原因是什么? [复制]

    这个问题在这里已经有答案了 在大多数情况下 我看到嵌套类是static 让我们举个例子Entry上课于HashMap static class Entry
  • Protractor browser.wait 不等待

    我假设 browser wait 应该是一个阻塞调用 但它没有按我的预期工作 这是我的样本 describe browser wait function beforeEach function browser wait function c
  • 问题:使用 Windows 7,运行我的应用程序时出现未经授权的访问异常

    我的应用程序引发未经授权的访问错误 运行我的应用程序时 我尝试访问以下位置的目录 Application UserAppDataPath 问题 它说我无权访问 Application UserAppDataPath 目录 有没有办法在我的应
  • pyqtgraph:同步不同图中轴的缩放

    我想同步几个 pyqtgraph 图的 X 轴 当用户通过鼠标交互重新缩放 X 轴时 例如 鼠标在 x 轴上时滚动滚轮 我想将相同的更改分配给所有其他绘图 那么我该怎么做呢 我从下面的基本示例中导出了最小化代码 我是否必须覆盖viewRan
  • 在 html 表 中将单行加粗 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我使用以下
  • 来自 iOS 的 Instagram 签名 API 调用

    对 Instagram 帖子方法进行签名 API 调用以关注用户 点赞用户的图像等 用户每小时的关注次数限制为 20 次 但如果我们进行签名 API 调用 那么用户每小时可以进行 60 次关注 但我的问题是如何进行签名 API 调用 我尝试
  • 限制 Apigility 中的结果

    我使用 Apigility 创建了一个代码连接 API 现在我正在使用标准创建存根 在我的PostResource有一种方法叫做fetchAll params array 我为该方法创建了代码 以便它返回一组可分页的结果 var Hydra
  • 在 MySQL 中查找同一个表中的重复项

    我有一个包含两列的表 艺术家 release id 我可以运行什么查询来显示重复记录 例如我的桌子是 ArtistX 45677 ArtistY 378798 ArtistX 45677 ArtistZ 123456 ArtistY 888
  • 显示ajax、Jquery返回的响应的html代码

    我有一个 jquery AJAX 函数 它检索一些 HTML 标记并将其显示在页面上 我还想显示返回的 HTML 的 html 代码 我四处寻找解决方案 但没有找到任何解决方案 有人可以帮忙吗 非常感谢 post get news php
  • 4x4 矩阵预乘和后乘

    我有以下功能 void Matrix Scale const float xScale const float yScale const float zScale Matrix scaleMatrix scaleMatrix m data
  • 如何查明某个函数被 javascript/jquery 调用了多少次?

    也许是一个奇怪的问题 但事实是 我有一个定期调用的函数 在该函数中我需要知道我处于哪个迭代中 或者该函数被调用了多少次 问题的简化版本 jQuery document ready function setInterval myFunctio
  • 有没有办法让 HTML5 数据列表使用模糊搜索?

    我有一组数据列表选项 我想在搜索时进行模糊匹配 例如 如果我输入 PHP HTML 或 PHPAndHTML 我希望其中任何一个与 PHP And HTML 选项匹配 有什么办法可以做到这一点吗 请参见这把小提琴 https jsfiddl