javascript - JS 过滤器/自动完成

标签 javascript php jquery json

我正在尝试在我的网站上设置一个搜索字段,以具有基于 JSON 对象中的字符串的自动完成/过滤功能。我想将搜索框视为一种过滤掉 JSON 对象中可能存在的任何内容的方法。

这是 html 格式的搜索栏:

<form id="searchProducts">
<input type="text" class="md-input label-fixed" name="srch-term" id="srch-term" autofocus placeholder="Search Products"/>
<span class="md-input-bar"></span>
</form>

这是从 php 数组创建的 JSON 对象的 JS:

<script type = "text/javascript">
var orderFormData = <?php Json_encode ($tempdata);?>;
</script>

我不确定最好的函数或如何在 JSON 对象上使用它,但我听说 JS 自动完成可能是一个很好的解决方案。

有没有一种非常简单的方法可以将它们联系在一起并在我的搜索中有一个很好的自动完成/过滤功能?

最佳答案

这只是作为概念验证:

<form id="searchProducts">
<input type="text" class="md-input label-fixed" name="srch-term" id="srch-term" autofocus placeholder="Search Products"/>
<span class="md-input-bar"></span>
</form>
<script>
  var orderFormData = <?php Json_encode ($tempdata);?>;
</script>
<script>
  var orderData = orderFormData // default value
  var search = function (e) {
    var term = e.currentTarget.value     
    orderData = Object.entries(orderFormData).reduce(function (data, entry) {
      if (entry[0].match(term) || entry[1].match(term)) {
        data[entry[0]] = entry[1]
      }

      return data
   }, {})

   console.log(orderData)
  }

  document.querySelector('#srch-term').addEventListener('keyup', search)    
</script>

这会根据从键/值到输入中给定术语的匹配来处理过滤器部分。

如果你想要自动完成,那么你将不得不编写更多的代码:)

关于javascript - JS 过滤器/自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47184927/

相关文章:

javascript - 为什么我得到的是未定义的?

javascript - BackboneJS 与 Codeigniter

php - 通过字符串从枚举中获取大小写

jquery - 使用 Masonry 路由 jquery 文件

javascript - 根据数据类型过滤器(JS)在列中显示数据

jquery - 你知道为什么为我的下拉框引入 jquery ui 自动完成功能也会改变我的列表框吗?

javascript - CSS 文本设置

javascript - 单页 JavaScript 应用程序的唯一 URL?

javascript - 使用 reducer 更新状态内的特定值

php - 忽略 PHP 中的 MySQL 外键约束