首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >选择-搜索重音词

选择-搜索重音词
EN

Stack Overflow用户
提问于 2015-08-12 08:41:57
回答 3查看 2.5K关注 0票数 2

我正在使用这个插件来美化复选框。它具有搜索功能,当输入时,它将过滤掉结果。问题是,如果我的选择中有á,é,í,ó,ú,ü,等等这样的词,插件就不会理解。例如:如果我输入a,它应该假设我输入了á,因此给出了a和á这样的单词的结果。但事实并非如此。只给了我一个词。

所以,难道没有人知道如何让它理解重音词吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-12 08:47:24

您所要求的是当前项目中的一个功能请求:

https://github.com/harvesthq/chosen/issues/536

尽管目前还没有官方发布的包含此功能的版本,但一些用户已经提出了可以尝试的工作解决方案。

例如:

http://fiddle.jshell.net/whqb5/1/

票数 4
EN

Stack Overflow用户

发布于 2021-03-10 17:59:45

我通过添加以下代码解决了这个问题:

代码语言:javascript
运行
复制
var t=t.normalize("NFD").replace(/[\u0300-\u036f]/g, "");

函数t.prototype.search_string_match=function(t,e)

票数 0
EN

Stack Overflow用户

发布于 2022-01-10 11:39:39

一种解决方案是修改get_search_regex (输入搜索值),然后修改search_string_match (循环槽下拉项)。

如果只修改后者,则在输入字符串中使用重音字符时,将筛选出匹配项。

步骤:

  1. 在函数开头的get_search_regex ->中规范化输入,添加t = t.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); (以小型化的js搜索t.prototype.get_search_regex=function(t){__)
  2. 规范化函数开头的search_string_match ->中的下拉项--添加t = t.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); (以小型化的js搜索t.prototype.search_string_match=function(t,e)__)

解释:

代码语言:javascript
运行
复制
normalize("NFD")

根据unicode规范化表单对字符串进行规范化。NFD代表规范分解,它“分解”unicode字符。例如,š被分解为ˇ + s分解为ff分解为d。因此,这可以处理比一个表所能提供的更多的情况。可能是过分了,所以您总是可以编写一个表。

在对字符串进行规范化之后,就会留下一些我们不想要的字符(比如š,我们有ˇ)。用正则表达式( regex )将u0300 - u036f (已知的指示符号)范围内的所有字符替换为nothing ("")来解决这个问题。

代码语言:javascript
运行
复制
replace(/[\u0300-\u036f]/g, "")

2021+的替代方案是:

代码语言:javascript
运行
复制
replace(/\p{Diacritic}/gu, "")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31960166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档