【问题标题】:JQuery datalist match input with multiple words in any orderJQuery datalist 以任意顺序将输入与多个单词匹配
【发布时间】:2017-12-22 08:08:32
【问题描述】:

编辑:我对 datalist 做了更多研究,似乎它的匹配行为是不可定制的。我决定放弃 datalist 并制作自己的下拉列表和自动完成插件。

我有一个这样的输入数据列表

<input list="Country" />
    <datalist id="Country">
        <option value="United States of America"/>  
    </datalist>

目前,如果用户按数据列表选项的顺序输入国家名称,数据列表将仅显示“美国”,即。美国、各州等

我希望数据列表显示“美利坚合众国”,即使用户输入的名称不按顺序,即。美国,美国各州。

在 PHP 和 MySQL 中,我可以将输入拆分为每个单词的数组,并使用 LIKE %..% 子句查询我想要的。

如何使用 Jquery 或 Javascript 实现这一点?

【问题讨论】:

标签: javascript jquery html


【解决方案1】:

使用正则表达式检查。 var userTypeRegex = new Regex(input.val().split(' ').join('|'));

然后使用上面的正则表达式检查每个选项值,如果测试并显示,否则隐藏

【讨论】:

  • 我找不到在输入和数据列表中实现正则表达式的方法。
  • 另外,对于这种情况,这里有一些非常业余的正则表达式。它可以以任意顺序匹配 1、2、3 或全部 4 个单词。一个缺点是我没有实现一种检查拼写错误或重复的方法。但是给你:/^(united|states|of|america)\s?(united|states|of|america)?\s?(united|states|of|america)?\s?(united|states|of|america)?/i
  • 我看到您在实施时遇到了问题。这是我将如何实现它:`jQuery(function($){ $('#input_field_where_user_enters_search_query').on('change', function(){ if($(this).val().match(/^( united|states|of|america)\s?(united|states|of|america)?\s‌​?(united|states|of|a‌​merica)?\s?(united|s‌​tates|of|america )?/i)) { // 当此用户搜索匹配时,在此处执行您想要的操作 } }); });编辑:在您执行代码的地方,您很可能需要遍历您的选项(目前只有 1 个)以将匹配项与保存该值的选项相关联。
  • @AaronEveleth 嗨,感谢您的帮助。我对 datalist 做了更多的研究,似乎它的匹配行为是不可定制的。我决定放弃 datalist 并制作自己的下拉列表和自动完成插件。
  • @J13t0u 很高兴你能弄清楚。有时重新开始是必要的。我的建议是,如果您不是绝对需要,请不要编写自己的正则表达式。有几个搜索插件。在这个search plugins 列表中,第二个和第三个似乎很容易实现。
猜你喜欢
  • 2014-08-20
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多