Javascript JQuery数据列表以任意顺序将输入与多个单词匹配
编辑:我对数据列表做了更多的研究,似乎它的匹配行为是不可定制的。我决定放弃数据列表,制作自己的下拉列表和自动完成插件 我有一个这样的输入数据列表Javascript JQuery数据列表以任意顺序将输入与多个单词匹配,javascript,jquery,html,Javascript,Jquery,Html,编辑:我对数据列表做了更多的研究,似乎它的匹配行为是不可定制的。我决定放弃数据列表,制作自己的下拉列表和自动完成插件 我有一个这样的输入数据列表 <input list="Country" /> <datalist id="Country"> <option value="United States of America"/> </datalist> 目前,如果用户按照数据列表选项的顺序键入国家名称,则数据
<input list="Country" />
<datalist id="Country">
<option value="United States of America"/>
</datalist>
目前,如果用户按照数据列表选项的顺序键入国家名称,则数据列表将仅显示“美利坚合众国”,即美国、美利坚合众国等
我希望数据列表显示“美利坚合众国”,即使用户键入的名称不符合顺序,即美利坚合众国,美利坚合众国
在PHP和MySQL中,我可以将输入拆分为每个单词的数组,并使用LIKE%..%子句查询我想要的内容
如何使用Jquery或Javascript实现这一点?使用regex进行检查。
Var userTypeRegex=newregex(input.val().split(“”).join(‘|’)
然后用上面的正则表达式检查每个选项值,如果test和show else hide,则使用正则表达式进行检查。
Var userTypeRegex=newregex(input.val().split(“”).join(‘|’)
然后用上面的正则表达式检查每个选项值,if test And show else hide这对您有帮助:您可以查看@gaetanoM我读过,但问题和答案是针对另一个已“修复”的问题的通过chrome。@Mojtaba我找不到将正则表达式实现到输入和数据列表中的方法。这对您有帮助:您可以看看@gaetanoM,我读过它,但问题和答案是针对另一个“已修复”的问题的通过chrome。@Mojtaba我找不到将正则表达式实现到输入和数据列表中的方法。我找不到将正则表达式实现到输入和数据列表中的方法。另外,这里有一些非常业余的正则表达式用于此场景。它可以按任意顺序匹配1、2、3或全部4个单词。一个缺点是我没有实现检查拼写错误或重复的方法。但你看:
/^(美利坚合众国)-(美利坚合众国)→美利坚合众国)→美利坚合众国→美利坚合众国→美利坚合众国→美利坚合众国→美利坚合众国→美利坚合众国→美利坚合众国→美利坚合众国→我看你在实施上有困难。下面是我如何实现它的:`jQuery(function($){$('#input_field_其中_user_输入_search_query').on('change',function(){if($(this).val().match(/^(united | states | of | america))s?(united | states | of | america)?\s?(美利坚合众国)梅里卡)?\s?(美国)tates | of | america)?/i)){//当此用户搜索匹配时,在此处执行所需操作}}});编辑:在执行代码时,您很可能需要循环使用选项(目前只有1个),以将匹配项与保存该值的选项相关联。@AaronEveleth您好,谢谢您的帮助。我对datalist做了更多的研究,似乎它的匹配行为是不可定制的。我决定放弃数据列表,制作自己的下拉列表和自动完成插件。@J13t0u很高兴你能弄明白。有时重新开始是必要的。我的建议是,如果不一定要写正则表达式,就不要写自己的正则表达式。有几个搜索插件。第二个和第三个似乎很容易在这个列表中实现。我找不到将正则表达式实现到input和datalist中的方法。另外,这里有一些非常业余的正则表达式。它可以按任意顺序匹配1、2、3或全部4个单词。一个缺点是我没有实现检查拼写错误或重复的方法。但你看:/^(美利坚合众国)-(美利坚合众国)→美利坚合众国)→美利坚合众国→美利坚合众国→美利坚合众国→美利坚合众国→美利坚合众国→美利坚合众国→美利坚合众国→美利坚合众国→我看你在实施上有困难。下面是我如何实现它的:`jQuery(function($){$('#input_field_其中_user_输入_search_query').on('change',function(){if($(this).val().match(/^(united | states | of | america))s?(united | states | of | america)?\s?(美利坚合众国)梅里卡)?\s?(美国)tates | of | america)?/i)){//当此用户搜索匹配时,在此处执行所需操作}}});编辑:在执行代码时,您很可能需要循环使用选项(目前只有1个),以将匹配项与保存该值的选项相关联。@AaronEveleth您好,谢谢您的帮助。我对datalist做了更多的研究,似乎它的匹配行为是不可定制的。我决定放弃数据列表,制作自己的下拉列表和自动完成插件。@J13t0u很高兴你能弄明白。有时重新开始是必要的。我的建议是,如果不一定要写正则表达式,就不要写自己的正则表达式。有几个搜索插件。在这个列表中,第二个和第三个似乎相当容易实现。