我想使用 JavaScript 为 JSON 数据创建一个搜索框,并在内容存在与否时弹出一个窗口
Posted
技术标签:
【中文标题】我想使用 JavaScript 为 JSON 数据创建一个搜索框,并在内容存在与否时弹出一个窗口【英文标题】:I want to create a search box for JSON data using JavaScript and get a popup if content exists or not 【发布时间】:2021-12-01 00:19:19 【问题描述】:我有这段代码来搜索我的 JSON 数据,但我 当我搜索时,我会收到一个弹出窗口,说明它是否存在于我的 JSON 文件中。我该如何解决?
我基本上需要一个 html 搜索框来搜索相应的 JSON 数据并在弹出窗口中返回结果:
var data = [
"id":198,
"name":"Aaron Garo",
,
"id":345,
"name":"Michael Stines",
,
"id":545,
"name":"Ully Heiz",
,
"id":678,
"name":"Asgaf Torino",
]
output = "";
$.each(data, function(key, val)
output += "<div class='values'>";
output += '<h5 class="value-id">' + val.id + '</h5>';
output += '<p class="value-name">' + val.name + '</p>'
output += "</div>";
);
$('#content').html(output);
/* SEEKER FUNCTION */
if (!RegExp.escape)
RegExp.escape = function (s)
return s.replace(/[\-\[\]()*+?.,\\\^$|#\s]/g, "\\$&")
;
jQuery(function()
var $rows = $('.values');
$('#seeker').keyup(function ()
var regex = new RegExp(RegExp.escape($.trim(this.value).replace(/\s+/g, ' ')), 'i')
$rows.hide().filter(function ()
var text = $(this).children(".value-name").text().replace(/\s+/g, ' ');
return regex.test(text)
).show();
);
);
.values
background: #FFFFAA;
.search-bar
width: 100%;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="search-bar">
<input type="text" id="seeker">
</div>
<div id="content"></div>
【问题讨论】:
@mplungjan want 当我搜索时,我收到一个弹出窗口,说明它是否存在于我的 json 文件中。 搜索现在不处理数字。您只想在人们输入数字时弹出一个窗口? 【参考方案1】:正是你需要的
var data = [
"id": 198,
"name": "Aaron Garo",
,
"id": 345,
"name": "Michael Stines",
,
"id": 545,
"name": "Ully Heiz",
,
"id": 678,
"name": "Asgaf Torino",
]
output = "";
$.each(data, function(key, val)
output += `<option value="Name : $val.name ; ID : $val.id" />`
);
$('#names').html(output);
$('#mybtn').click(() =>
var name = document.getElementById("seeker").value.split(": ")[1].split(" ;")[0];
if (data.find(o => o.name == name))
alert("value does exist");
else
alert("value does not exist");
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="search-bar">
<input type="text" id="seeker" list="names">
<datalist id="names">
</datalist>
<button id="mybtn" role="button">Search</button>
</div>
【讨论】:
嗨,我已经编辑了 sn-p 请检查这是否是您想要的。如果是,请接受我的回答【参考方案2】:你的意思可能是这样的:
var data = [ "id":198, "name":"Aaron Garo" , "id":345, "name":"Michael Stines" , "id":545, "name":"Ully Heiz" , "id":678, "name":"Asgaf Torino"];
$('#content').html(data.map((id,name) => `<div class='values'><h5 class="value-id">$id</h5><p class="value-name">$name</p></div>`));
/* SEEKER FUNCTION */
if (!RegExp.escape) RegExp.escape = s => s.replace(/[\-\[\]()*+?.,\\\^$|#\s]/g, "\\$&");
$(function()
var $rows = $('.values');
$('#seeker').keyup(function ()
var regex = new RegExp(RegExp.escape($.trim(this.value).replace(/\s+/g, ' ')), 'i')
$rows.hide().filter(function ()
var text = $(this).children(".value-name").text().replace(/\s+/g, ' ');
return regex.test(text)
).show();
const count = $(":visible",$rows).length;
$("#res").text(count/2 +" found").toggle(count > 0)
);
);
.values
background: #FFFFAA;
.search-bar
width: 100%;
#res display: none
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="search-bar">
<input type="text" id="seeker"> <span id="res"></span>
</div>
<div id="content"></div>
【讨论】:
点击搜索时会弹出提示内容是否存在 就像我创建 Aaron Garo 然后点击搜索显示弹出此名称存在或此名称不存在 请画一些图。我不明白 我添加了图片谢谢以上是关于我想使用 JavaScript 为 JSON 数据创建一个搜索框,并在内容存在与否时弹出一个窗口的主要内容,如果未能解决你的问题,请参考以下文章
将具有多个字段的表单数据转换为 JSON Jquery Javascript
如何对 Javascript 对象进行排序,或将其转换为数组?
为 DataTables aoColumnDefs 创建 JavaScript 数组(JSON 格式)
我想将 JSON 数据传递给与 web 视图相关的 javascript 函数。但我无法从 Javascript 函数中获取响应数据