javascript - 搜索输入字段以搜索 JSON 数据

标签 javascript jquery html

我有一个根据用户需求生成的对象数组。

我想做的是:-

  1. 我有一个对象数组,我将其存储在变量中并有一个输入字段
  2. 输入字段是类型搜索,因此在我的对象数组中,键是 ItemNameBatchCodeCasesQtyUnitQtyPurRateDisc% 我将 ItemName 作为搜索参数
  3. 现在,每当用户专注于输入字段时,我都会搜索 ItemName 的数据,但不知何故,我无法创建我必须创建的内容
  4. 我想创建类似 This 的内容

  5. 每当用户在输入字段内键入内容时,匹配项也应出现在输入字段内

  6. 我的代码中作为搜索参数的下拉菜单不可点击

我的代码

var data = [{
    "ItemName": "Curd",
    "BatchCode": 400231,
    "CasesQty": 10,
    "UnitQty": 5,
    "PurRate": 50,
    "Disc%": 6
  },
  {
    "ItemName": "Rice",
    "BatchCode": 400123,
    "CasesQty": 12,
    "UnitQty": 7,
    "PurRate": 80,
    "Disc%": 10
  },
  {
    "ItemName": "Milk",
    "BatchCode": 400156,
    "CasesQty": 4,
    "UnitQty": 2,
    "PurRate": 20,
    "Disc%": 2
  },
  {
    "ItemName": "Butter",
    "BatchCode": 400564,
    "CasesQty": 8,
    "UnitQty": 6,
    "PurRate": 35,
    "Disc%": 4
  }
]

$('#searchInput').keyup(function() {
  var searchField = $(this).val();
  if (searchField === '') {
    $('#filter-records').html('');
    return;
  }

  var regex = new RegExp(searchField, "i");
  var output = '<div class="row">';

  $.each(data, function(key, val) {
    if ((val.ItemName.search(regex) != -1)) {
      output += '<div">';
      output += '<div class="form-group"><a class="dropdown-item">' + val.ItemName + '</a></div>'

    }
  });
  output += '</div>';
  $('#filter-records').html(output);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css">

<div class="form-group">
  <input type="search" class="form-control" name="searchInput" id="searchInput">
</div>

<div id="filter-records"></div>

我认为我使用了错误的方法在新 div 中显示搜索参数,我上传的图像我想做类似的事情

最佳答案

首先从给定对象创建项目名称列表,然后使用自动完成库。我正在使用 jQuery 库进行自动完成。

<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>jQuery UI Autocomplete - Default functionality</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="/resources/demos/style.css">
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  <script>
  $( function() {
    var data = [{
      "ItemName": "Curd",
      "BatchCode": 400231,
      "CasesQty": 10,
      "UnitQty": 5,
      "PurRate": 50,
      "Disc%": 6
    },
    {
      "ItemName": "Rice",
      "BatchCode": 400123,
      "CasesQty": 12,
      "UnitQty": 7,
      "PurRate": 80,
      "Disc%": 10
    },
    {
      "ItemName": "Milk",
      "BatchCode": 400156,
      "CasesQty": 4,
      "UnitQty": 2,
      "PurRate": 20,
      "Disc%": 2
    },
    {
      "ItemName": "Butter",
      "BatchCode": 400564,
      "CasesQty": 8,
      "UnitQty": 6,
      "PurRate": 35,
      "Disc%": 4
    }
  ]

    let itemName = data.map(value => { return value.ItemName });
    
    $( "#tags" ).autocomplete({
      source: itemName
    });
  } );
  </script>
</head>
<body>
 
<div class="ui-widget">
  <label for="tags">Tags: </label>
  <input id="tags">
</div>
 
 
</body>
</html>

关于javascript - 搜索输入字段以搜索 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55823022/

相关文章:

javascript - 将 javascript 应用到生成的内容

javascript - 突出显示 html 文档中的文本

Jquery Migrate CDN 回退条件

javascript - 打印带有图像的 Div

javascript - Angular 5 - 可观察的返回错误无法读取未定义的属性

javascript - 如何垂直居中模态?

javascript - 我无法编写一个开关来显示和隐藏元素?

javascript - 从父窗口到 2 层嵌套 iframe 的事件监听器可能吗?

javascript - d3 在数据更新时错误地附加了 dom 元素

html - 如何向我当前的导航样式添加下拉菜单