我正在使用这个插件来美化复选框。它具有搜索功能,当输入时,它将过滤掉结果。问题是,如果我的选择中有á,é,í,ó,ú,ü,等等这样的词,插件就不会理解。例如:如果我输入a,它应该假设我输入了á,因此给出了a和á这样的单词的结果。但事实并非如此。只给了我一个词。
所以,难道没有人知道如何让它理解重音词吗?
发布于 2022-01-10 11:39:39
一种解决方案是修改get_search_regex (输入搜索值),然后修改search_string_match (循环槽下拉项)。
如果只修改后者,则在输入字符串中使用重音字符时,将筛选出匹配项。
步骤:
get_search_regex ->中规范化输入,添加t = t.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
(以小型化的js搜索t.prototype.get_search_regex=function(t){__)search_string_match ->中的下拉项--添加t = t.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
(以小型化的js搜索t.prototype.search_string_match=function(t,e)__)解释:
normalize("NFD")根据unicode规范化表单对字符串进行规范化。NFD代表规范分解,它“分解”unicode字符。例如,š被分解为ˇ + s,ff分解为ff,Ⓓ分解为d。因此,这可以处理比一个表所能提供的更多的情况。可能是过分了,所以您总是可以编写一个表。
在对字符串进行规范化之后,就会留下一些我们不想要的字符(比如š,我们有ˇ)。用正则表达式( regex )将u0300 - u036f (已知的指示符号)范围内的所有字符替换为nothing ("")来解决这个问题。
replace(/[\u0300-\u036f]/g, "")replace(/\p{Diacritic}/gu, "")https://stackoverflow.com/questions/31960166
复制相似问题