Jquery 自动完成 utf-8 字符区分大小写

2023-12-12

我正在使用 jquery 自动完成插件来搜索一长串名称。它适用于所有拉丁语和英语字符,但对于土耳其语字符我遇到问题,因为搜索将区分大小写,例如:

A and a将匹配包含以下内容的所有城市A or a.

İ and i不会匹配像这样的城市İstambul and İzmir

这是代码:

<label for="PROVINCE_AC_LEFT" class="
      PROVINCE_AC_LEFT">İl</label><input   type="text" name="PROVINCE_AC_LEFT_autocomplete_label"  id="PROVINCE_AC_LEFT_autocomplete_label" 
             value="" maxlength="" size=""/><input   type="hidden" name="PROVINCE_AC_LEFT"  id="PROVINCE_AC_LEFT" 
             value="" />
            <script>
             $(function() {

                            var tags_PROVINCE_AC_LEFT = [




               { label: "Van" , value: "6500" },

               { label: "Yozgat" , value: "6600" },

               { label: "Zonguldak" , value: "6700" },

               { label: "Aksaray" , value: "6800" },

               { label: "Bayburt" , value: "6900" },

               { label: "Karaman" , value: "7000" },

               { label: "Kırıkkale" , value: "7100" },

               { label: "Batman" , value: "7200" },

               { label: "Şırnak" , value: "7300" },

               { label: "Bartın" , value: "7400" },

               { label: "Ardahan" , value: "7500" },

               { label: "Iğdır" , value: "7600" },

               { label: "Yalova" , value: "7700" },

               { label: "Karabük" , value: "7800" },

               { label: "Kilis" , value: "7900" },

               { label: "Osmaniye" , value: "8000" },

               { label: "Düzce" , value: "8100" },

               { label: "Adana" , value: "0100" },

               { label: "Adıyaman" , value: "0200" },

               { label: "Afyonkarahisar" , value: "0300" },

               { label: "Ağrı" , value: "0400" },

               { label: "Amasya" , value: "0500" },

               { label: "Ankara" , value: "0600" },

               { label: "Antalya" , value: "0700" },

               { label: "Artvin" , value: "0800" },

               { label: "Aydın" , value: "0900" },

               { label: "Balıkesir" , value: "1000" },

               { label: "Bilecik" , value: "1100" },

               { label: "Bingöl" , value: "1200" },

               { label: "Bitlis" , value: "1300" },

               { label: "Bolu" , value: "1400" },

               { label: "Burdur" , value: "1500" },

               { label: "Bursa" , value: "1600" },

               { label: "Çanakkale" , value: "1700" },

               { label: "Çankırı" , value: "1800" },

               { label: "Çorum" , value: "1900" },

               { label: "Denizli" , value: "2000" },

               { label: "Diyarbakır" , value: "2100" },

               { label: "Edirne" , value: "2200" },

               { label: "Elazığ" , value: "2300" },

               { label: "Erzincan" , value: "2400" },

               { label: "Erzurum" , value: "2500" },

               { label: "Eskişehir" , value: "2600" },

               { label: "Gaziantep" , value: "2700" },

               { label: "Giresun" , value: "2800" },

               { label: "Gümüşhane" , value: "2900" },

               { label: "Hakkari" , value: "3000" },

               { label: "Hatay" , value: "3100" },

               { label: "Isparta" , value: "3200" },

               { label: "Mersin" , value: "3300" },

               { label: "İstanbul" , value: "3400" },

               { label: "İzmir" , value: "3500" },

               { label: "Kars" , value: "3600" },

               { label: "Kastamonu" , value: "3700" },

               { label: "Kayseri" , value: "3800" },

               { label: "Kırklareli" , value: "3900" },

               { label: "Kırşehir" , value: "4000" },

               { label: "Kocaeli" , value: "4100" },

               { label: "Konya" , value: "4200" },

               { label: "Kütahya" , value: "4300" },

               { label: "Malatya" , value: "4400" },

               { label: "Manisa" , value: "4500" },

               { label: "Kahramanmaraş" , value: "4600" },

               { label: "Mardin" , value: "4700" },

               { label: "Muğla" , value: "4800" },

               { label: "Muş" , value: "4900" },

               { label: "Nevşehir" , value: "5000" },

               { label: "Niğde" , value: "5100" },

               { label: "Ordu" , value: "5200" },

               { label: "Rize" , value: "5300" },

               { label: "Sakarya" , value: "5400" },

               { label: "Samsun" , value: "5500" },

               { label: "Siirt" , value: "5600" },

               { label: "Sinop" , value: "5700" },

               { label: "Sivas" , value: "5800" },

               { label: "Tekirdağ" , value: "5900" },

               { label: "Tokat" , value: "6000" },

               { label: "Trabzon" , value: "6100" },

               { label: "Tunceli" , value: "6200" },

               { label: "Şanlıurfa" , value: "6300" },

               { label: "Uşak" , value: "6400" },



                            ];

                            $( "#PROVINCE_AC_LEFT_autocomplete_label" ).autocomplete({
                                source: tags_PROVINCE_AC_LEFT,
                                select: function(event, ui) {
                                    var selectedObj = ui.item;
                                    $( "#PROVINCE_AC_LEFT_autocomplete_label" ).val(selectedObj.label);
                                    $( "#PROVINCE_AC_LEFT" ).val(selectedObj.value);
                                    return false;
                                },
                                focus: function( event, ui ) { $(this).val( ui.item.label ); return false; }
                            });
                        });

             </script>

示例可以在注册调查问卷的第二页找到:

http://tr.mysurvey.com/index.cfm?action=Main.join


距上次回复多年后,我刚刚遇到了同样的问题。

重音映射对于土耳其语来说不够好,因为它仍然将“I”与“i”匹配,反之亦然。然而,在土耳其语中,小写“I”是“ı”,大写“i”是“ı”。因此,当我输入“I”时,“ızmir”不应该是匹配项,而当我输入“ı”时,“Iğdır”不应该是匹配项。

所以我使用了以下内容:

function toLowerTurkish(str) {
  var letters = {
    'Ç': 'ç', 'Ğ': 'ğ', 'I': 'ı', 'İ': 'i', 'Ö': 'ö', 'Ş': 'ş', 'Ü': 'ü',
  };
  str = str.replace(/(([ÇĞIİÖŞÜ]))/g, function(letter) { return letters[letter]; });
  return str.toLowerCase();
}

function containsTurkish(txt, str) {
  return toLowerTurkish(txt).indexOf(toLowerTurkish(str)) >= 0;
}

var itemList = [
  { label: 'İzmir',    value: 'İzmir' },
  { label: 'istanbul', value: 'istanbul' },
  { label: 'Iğdır', value: 'Iğdır' },
  { label: 'ısparta', value: 'ısparta' }
];

function autocompleteSourceTurkish(request, response) {
  var matchList = [];
  itemList.forEach(function(item, index) {
    if (containsTurkish(item.label, request.term)) matchList.push(item);
  });
  response(matchList);
}

$(function() {
  $('#itemMenu').autocomplete({
    source: autocompleteSourceTurkish
  });
});

http://jsfiddle.net/emfy5gf9/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jquery 自动完成 utf-8 字符区分大小写 的相关文章

  • jQuery,REAL:不是等价的运算符?

    此代码行选择任何类名不是 id 和 quantity 的 div 内的所有子输入 div item gt div not id quantity gt input live keydown function event 执行相反操作的代码行
  • jQuery 选择 # id 以单词为前缀,计数器为后缀

    有没有办法用 jQuery 选择所有带有前缀 my 和后缀 0 9 的 id 像这样的 my 1 4 还是可以用循环来实现 div div div div div div div div div div 第一个想法 似乎效果很好 div i
  • jquery window.open 在 ajax 成功中被阻止

    尝试在我的 ajax 成功调用中打开一个新的浏览器窗口 但是 它被阻止为弹出窗口 我做了一些搜索 发现用户事件需要绑定到 window open 才能避免这种情况发生 我还找到了这个解决方案 您可以在 ajax 之前打开一个空白窗口 然后在
  • Jquery - 通过在字符串中构建 id 的 id 获取元素

    我在使用 jquery 元素时遇到问题 我正在 var 中构造名称 例如 var myId myGotId myId attr title changed myId 返回空 我想通过 id 获取我的元素 但动态构建我的 Id 连接字符串 编
  • 显示覆盖以覆盖整个页面

    我有一个正在加载的网络应用程序iframe 我需要显示一个覆盖 div 来覆盖整个页面 问题是叠加层当前仅显示在iframe区域而不覆盖整个页面 我们的应用程序 子应用程序 是加载的一组应用程序的一部分iframe 你可以做这样的事情 di
  • 无法在 Chrome 中设置 currentTime

    由于某些原因 在 Chrome 中我无法设置音频标签的 currentTime 属性 我可以提醒 currentTime 并且它显示正确 但是当我尝试设置 currentTime 时它会恢复为零 进度条上有一个事件侦听器 它会触发如下所示的
  • wp_unregister 和 wp_enqueue

    有人建议我使用 wp unregister 和 wp enqueue 将 wordpress jquery 库替换为 google 托管的库 因为 wordpress 有一些问题 然而 当我尝试将这些插入我的 WordPress 网站时 它
  • jQuery 文件上传预览图像

    我正在使用 jQuery 文件上传插件 http blueimp github io jQuery File Upload http blueimp github io jQuery File Upload 用于我的网站的图像上传 我已经看
  • 如何在没有 JQuery 的情况下模仿跨浏览器 $(document).ready() 行为[重复]

    这个问题在这里已经有答案了 可能的重复 document ready 相当于没有 jQuery https stackoverflow com questions 799981 document ready equivalent witho
  • jquery:$().animate() 不是函数

    我已经做了很多搜索 但无法找到我的问题的答案 所以这里是 我正在尝试创建一个滑出切换菜单本教程 http alijafarian com jquery horizontal slideout menu 我收到一个错误slideoutMenu
  • Jquery函数返回值

    我创建了一个函数来迭代 UL LI 这工作得很好 我的问题是将值返回给另一个变量 这可能吗 最好的方法是什么 谢谢 function getMachine color qty getMachine li each function var
  • 具有有限行数和字符数限制的文本区域

    我需要具有 TextArea 的功能 1 maximum total lines 6 and 2 in each line there must be maximum of 16 chars 3 if user enters 17th ch
  • 如何动态添加和删除jquery选项卡?

    我有一个 aspx 页面 上面有 2 个静态 jquery 选项卡 单击其中一个选项卡上的按钮后 我想动态添加一个新选项卡 该选项卡从另一个 aspx 页面加载其内容 我也尝试使用以下示例 http jquery ui googlecode
  • 为什么 jQuery 点击事件会多次触发

    我这里有这个示例代码http jsfiddle net DBBUL 10 http jsfiddle net DBBUL 10 document ready function creategene click function confir
  • jQuery .val() 返回单选按钮的未定义

    我正在尝试获取 jQuery 中选中的单选按钮值 但它返回的值是 未定义 我搜索了这个问题的解决方案 但对我来说没有任何作用 我的 HTML 代码
  • 将 jquery-mobile 与 Webpack 结合使用

    我正在尝试使用 webpack 加载 jquery mobile 但到目前为止还没有运气 我知道 jquery mobile 依赖于 jquery ui 而 jquery ui 又依赖于 jquery 如何在 Webpack 中设置这样的场
  • jQuery 验证规则和消息 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我在设置 jQuery 验证的规则和
  • 根据用户输入使用 Jquery 显示/隐藏字段

    li class numeric optional li
  • jquery:当我在文档上附加一层时,如何重置文档滚动条?

    当我在文档上附加图层时 如何重置文档滚动条 例如 它就像 Facebook 页面 当您有一个很长的文档时 您需要向下滚动才能查看较旧的图像 帖子 当你点击照片时 滚动条发生了变化 从顶部开始 但文档页面根本不跳转 当关闭照片查看器图层时 滚
  • Bootstrap 3 / 显示模式不适用于 javascript 方式

    我用Modal http getbootstrap com javascript modalsBootstrap 3 0 的功能 我有这个代码 a href myNestedContent Open the modal containing

随机推荐

  • 使用 http.request 获取 Node.js 中的二进制内容

    我想从 https 请求中检索二进制数据 我找到了一个类似的问题使用请求方法 使用 request 获取 Node js 中的二进制内容 是说设置encoding to null应该有效 但事实并非如此 options hostname u
  • 在 ggplot2 中,在顶部绘制反转 y 轴和 x 轴的图

    我想得到ggplot2绘制顶部带有反转 y 轴和 x 轴的图 我用了scale y reverse 获得反向 y 轴 但无法弄清楚如何将 x 轴放在顶部而不是底部 dfn lt read table header T text supp d
  • Matplotlib 对数刻度刻度标签,乳胶字体中的减号太长

    我在 matplotib 中使用 text usetex True 这对于具有线性比例的图来说非常有用 然而 对于对数刻度 y 刻度如下所示 指数中的负号占用了绘图中的大量水平空间 这不太好 我希望它看起来像这样 该字体来自 gnuplot
  • 日期时间转 JavaScript 日期

    Stackoverflow 上的另一个答案是从 Javascript 日期到 net DateTime 的转换 long msSinceEpoch 1260402952906 Value from Date getTime in JavaS
  • 在球体上使用多个纹理 [Three.js]

    是否可以在球体上加载多个纹理 我的意思是说有什么办法Three js将球体分割成n碎片 单独纹理它们并再次将这些碎片渲染为整个球体 我不想在球体上加载整个纹理 而是只渲染用户首先在屏幕上看到的那些部分 并且当用户旋转球体时 必须加载纹理的其
  • 在边框中间剪开

    我试图实现悬停时看起来像图像的边框 我不知道如何描述边界 但有什么方法可以实现这一点吗 text width 100px height 20px text align center text hover border 1px solid b
  • Blazor 中的轮询线程

    我正在使用 REST API 和 Web 界面构建 Blazor 应用程序 我还将有一个应用程序的监视部分 它将每秒从许多不同的数据源轮询数据 我在一个单独的类中创建了一个长时间运行的线程 它只是轮询我想要的数据 并且似乎工作正常 我使用的
  • 如何检查字典是否为空?

    我正在尝试检查字典是否为空 但它的行为不正常 它只是跳过并显示ONLINE除了显示消息之外没有任何其他内容 有什么想法吗 def isEmpty self dictionary for element in dictionary if el
  • iPod Touch 上的飞行模式——重新审视

    情况是这样的 我们有一个记录声音的应用程序 如果应用程序在第二代 iPod Touch 上运行且飞行模式关闭 则由于 iPod 的 WIFI 活动 录音中会出现周期性噪音 因此 我想检测我们是否正在第二代 iPod Touch 上运行 我知
  • 如何以另一个用户(la /netonly)身份启动 Internet Explorer 进程?

    我正在尝试从我们的 WPF 应用程序中以另一个用户身份启动 Internet Explorer 以便当我们的用户访问 内部 网站时 他们会通过集成 Windows 身份验证进行静默身份验证 我们不想以其他用户身份启动 iexplore ex
  • Android是如何定义屏幕分辨率的呢?

    在Android中 您可以通过适当命名res目录来为不同的手机属性定义不同的资源 我需要能够支持不同的布局480x800 and 480x854 我想我可以将一组资源存储在layout hdpi v4目录中 另一组资源存储在layout l
  • C:如何比较两个字符串? [复制]

    这个问题在这里已经有答案了 Edit 这是重复的 我已将其标记为重复 参见 问题 为什么 C 语言中 a a 所以我试图根据结构中的字段打印出特定的消息 该字段包含字符串 1 每当我跑步时printf s record fields 2 输
  • 在 Objective-C 方法中引用 BOOL 值

    这是代码的一小部分 interface BOOL isCarryingmallet implementation BOOL isCarryingWeapon return isCarryingMallet int getWeaponDama
  • 在“源/网络”选项卡中复制多个 URL

    是否可以在 Chrome 开发工具的 源 或 网络 选项卡中提取多个资源的 URL 当我想获取某个 URL 时single资源 我可以使用上下文菜单功能来完成复制链接地址 我可以从 网络 选项卡切换到此资源 反之亦然 但如果我需要获取以下
  • 正则表达式 - 从字符串中提取电话号码

    我需要从带有分隔符 波形符 的字符串中提取两个电话号码 棘手的部分是电话号码的格式可能会有所不同 字符串模式保持不变 但电话号码的格式可以是以下三种类型之一 1 4 digit extensions ex 1001 2 10 digit 5
  • Jenkins 持续集成服务器的作业特定 SVN 签出文件夹

    我刚刚设置了一个新的 Jenkins CI 服务器 这是我昨天刚安装的最新版本 我已经完成了几个工作正常的构建 我有几个不同的存储库 它可以从中提取和构建 其中大多数适用于 NET 项目等易于在任何地方构建的项目 因此只需在工作区文件夹中签
  • 带有 GoDaddy 证书的 HTTP SSL - 此服务器的证书链不完整

    一般来说 我从 GoDaddy 获得了 3 个文件 主证书文件 服务器私钥 捆绑文件 通过以下方式在我的 Go 服务器中配置了所有这些文件 cert err tls LoadX509KeyPair myalcoholist pem myal
  • 访问 Struts 2 中的所有用户会话

    我正在使用 JPA 构建 struts 2 应用程序 用户可以多次登录该应用程序 我想 用户能够在网格中查看他的所有会话 并可能突出显示当前会话 并且用户可以选择一个会话并终止它 管理员还应该能够查看所有登录的用户 还可以查看每个登录用户的
  • 如何更改元素的内部文本而不更改其子元素

    我有一个 html 元素 例如 div Change only me div but not me div div 但我只想更改第一个文本并保留子 div 不变 document getElementById el1 innerText c
  • Jquery 自动完成 utf-8 字符区分大小写

    我正在使用 jquery 自动完成插件来搜索一长串名称 它适用于所有拉丁语和英语字符 但对于土耳其语字符我遇到问题 因为搜索将区分大小写 例如 A and a将匹配包含以下内容的所有城市A or a and i不会匹配像这样的城市 stam