Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否有方法显示与用户输入不匹配的数据列表选项?_Javascript_Jquery - Fatal编程技术网

Javascript 是否有方法显示与用户输入不匹配的数据列表选项?

Javascript 是否有方法显示与用户输入不匹配的数据列表选项?,javascript,jquery,Javascript,Jquery,我有两个元素,一个数据列表和一个输入: REST端点返回的数据的格式如下: [ { "label": "active", "name": "iron" }, .. ] 基本上,AJAX请求命中PostgreSQL数据库前面的REST端点,该数据库根据提供的部分参数运行SELECT,并返回一个2列表,该表的格式与上述响应相同 但是,我遇到过这样的情况:从AJAX请求返回的数据与用户输入的数据拼写不同;例如,当input.value='magnet'时,我有时会返回

我有两个元素,一个数据列表和一个输入:

REST端点返回的数据的格式如下:

[
  { 
    "label": "active",
    "name": "iron"
  }, 
  ..
]
基本上,AJAX请求命中PostgreSQL数据库前面的REST端点,该数据库根据提供的部分参数运行SELECT,并返回一个2列表,该表的格式与上述响应相同

但是,我遇到过这样的情况:从AJAX请求返回的数据与用户输入的数据拼写不同;例如,当input.value='magnet'时,我有时会返回一个选项列表,其中一些选项可能会读作'iron'


问题:由于“iron”的拼写与“magnet”不同,即使创建了option元素,用户也不会在datalist下拉列表中看到此选项,除非用户实际键入“iron”。有没有办法在数据列表中显示“iron”,即使它与用户键入的内容不匹配?

据我所知,您愿意在搜索框中键入输入时显示同义词,即如果用户键入magnet,他将看到“magnet”的同义词,在这种情况下,恰好是铁 您可以做的是,当ajax命中被发送到example.com时,我知道有一些SQL代码作为表_name中的SELECT关键字,其中的关键字类似于“%”。即使用户输入mag,也会返回“magnet”。现在,当用户输入mag时,会返回“iron”和“magnet” 您必须对该表进行一点修改,如下所示: 1.创建包含以下列的关键字表:id、关键字和同义词\u to \u关键字 2.输入以下数据: 1,‘铁’,空 2,“磁铁”,1

现在将查询修改为:选择id为I,关键字来自表\u name,其中关键字类似“%”,或关键字类似于选择关键字来自表\u name,其中同义词\u to \u keyword=I
请注意,您必须维护一个关键字列表和关键字的可能同义词,以便用户在键入“magnet”时看到所有可能的选项,如magnet、iron等

由于Chrome将比较值和标签以查看是否应显示datalist选项,因此您可以将所有选项标签设置为输入中的值,以便它们显示出来

代码示例如下: 函数autoSuggestAddressinput{ 如果输入.value{ //虚拟数据 让建议=[示例1、示例2、示例3]; //清除旧数据列表 让datalist=input.list; 而datalist.hasChildNodes{ datalist.removechildatalist.firstChild; } 建议.forEachitem=>{ let option=document.createElementoption; option.label=input.value; option.value=项目; datalist.appendChildoption; }; } } 住址
我忍不住想,这个问题中缺少了一些东西——您是否有可能向我们提供您在AJAX请求中遇到的查询,当用户键入iron或iron时,返回的数据有效负载示例是什么magnet@Alex我已经更新了一个问题,您说即使创建了该选项,该选项也不会显示-您如何在服务器/客户端上过滤该数据。仍然没有足够的信息,因为你必须依靠浏览器来进行匹配,所以听起来使用的工具并不适合这项工作
var params = {
    "partial": $("#custom_id").value;
};
$.ajax({
      cache: true,
      url: "http://www.example.com",
      type: "POST",
      data: JSON.stringify(params),  // contains the input.value
      contentType: "application/json",
      headers: {
        "Range": "0-9"
      },
      dataType: "json",
      processData: false,
      // On success, create <option> elements and append them to datalist
      success: function(data) { .. };
[
  { 
    "label": "active",
    "name": "iron"
  }, 
  ..
]