使用 Chosen.js 搜索国际字符

Gar*_*nes 2 javascript jquery-chosen

有没有人找到使用 selected.js 搜索国际字符的修复程序?

例如,如果我有一个带有以下选项的多选字段: - 一个法国城堡 - 一个英国城堡

我搜索“茶”

只会显示英文。

小智 5

我不知道,如果现在回答还为时不晚,但它可能可以帮助其他人。

关键是在比较期间从输入的字符串和匹配的选项字符串中去除变音符号。我的修改是使用 1.1.0 版的 jquery Chosen 插件,从github下载。

首先,你必须有一个去除变音符号的函数(我在 winnow_results() 之后添加了它)

// strip czech diacritics from string
AbstractChosen.prototype.strip_diacritics= function(string) {
  var 
    translationTable= [
      // input with diacritics - add your characters if necessary
      "é?É?????žŽúÚ??üÜíÍóÓáÁšŠ??ýÝ????äÄ??????öÖ",
      // stripped output
      "eeEErRtTzZuUuUuUiIoOaAsSdDyYcCnNaAlLlLrRoO",
    ],
    output= '';

  // scan through whole string
  for (var i= 0; i < string.length; i++) {
    var charPosition= translationTable[0].indexOf(string[i]);
    output+= charPosition == -1 ? string[i] : translationTable[1][charPosition];
  }

  return output;
}
Run Code Online (Sandbox Code Playgroud)

然后在 winnow_results() 函数中的适当位置使用它。引用selected.jquery.js行:

第 315 行

searchText = this.get_search_text();
// replace with
searchText = this.strip_diacritics(this.get_search_text());
Run Code Online (Sandbox Code Playgroud)

第 339 行

option.search_match = this.search_string_match(option.search_text, regex);
// replace with
option.search_match = this.search_string_match(this.strip_diacritics(option.search_text), regex);
Run Code Online (Sandbox Code Playgroud)

最后一行#345

startpos = option.search_text.search(zregex);
// replace with
startpos = this.strip_diacritics(option.search_text).search(zregex);
Run Code Online (Sandbox Code Playgroud)

你就完成了:-)。

(我想为旧的 DOS 游戏中的额外生命写一些“保存游戏字节替换”指令)

pastebin 中的整个修改文件

2016 年 9 月 29 日:在选择 1.6.2 中进行的修改,测试正常。