土耳其语字符搜索问题

土耳其语字符搜索问题

本文介绍了JQuery datatablejs 土耳其语字符搜索问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 jquery datatablejs.我列出项目.我想在搜索中搜索一些东西.但是当我输入 İ 时,它只找到了 İ 字符.我也想找到 i 个字符.像 I-ı Ü-ü.

I have a jquery datatablejs. I list items. I want to search something in search. But when i enter İ it finds only İ chars. I want to find also i chars. Like I-ı Ü-ü.

我搜索了很多网站/文档,但没有找到任何东西.

I searched lots of sites/docs but find anything.

下面的这个链接定义了用于排序的土耳其字符.我们可以用它来搜索吗?其他问题是或者我们可以说我的约束是我无法更改数据表的原始数据.我无法将 İ 替换为 i 或将 i 替换为 İ.

This link below defines turkish chars for sorting. Can we use this for searching? Other problem is or we can say my constraint is I can't change datatable's original data. I can't replace İ to i or i to İ.

https://datatables.net/plug-ins/sorting/turkish-string

注意:我使用 ajax 从 mvc 控制器获取数据.我没有得到 json 数据.我得到模型对象.

Note: I am getting data with ajax from mvc controller. I do not get json data. I get model object.

推荐答案

我找到了一个解决方案,并且没有任何问题.

I found a solution and it work without any problem.

解决办法如下:

我调用这个函数:

https://jsfiddle.net/s39o8pdu/1/

jQuery.extend( jQuery.fn.dataTableExt.oSort, {
  'locale-compare-asc': function ( a, b ) {
     return a.localeCompare(b, 'cs', { sensitivity: 'case' })
  },
  'locale-compare-desc': function ( a, b ) {
     return b.localeCompare(a, 'cs', { sensitivity: 'case' })
  }
})

jQuery.fn.dataTable.ext.type.search['locale-compare'] = function (data) {
    return NeutralizeAccent(data);
}

function NeutralizeAccent(data)
{
  return !data
      ? ''
        : typeof data === 'string'
        ? data
        .replace(/\n/g, ' ')
        .replace(/[éÉěĚèêëÈÊË]/g, 'e')
        .replace(/[šŠ]/g, 's')
        .replace(/[čČçÇ]/g, 'c')
        .replace(/[řŘ]/g, 'r')
        .replace(/[žŽ]/g, 'z')
        .replace(/[ýÝ]/g, 'y')
        .replace(/[áÁâàÂÀ]/g, 'a')
        .replace(/[íÍîïÎİÏ]/g, 'i')
        .replace(/[ťŤ]/g, 't')
        .replace(/[ďĎ]/g, 'd')
        .replace(/[ňŇ]/g, 'n')
        .replace(/[óÓ]/g, 'o')
        .replace(/[úÚůŮ]/g, 'u')
        : data
}

var table = $('#example').DataTable({
    columnDefs : [
     { targets: 0, type: 'locale-compare' },
  ]
})

 $('#example_filter input').keyup(function () {
    table
    .search(
      jQuery.fn.dataTable.ext.type.search.string(NeutralizeAccent(this.value))
    )
    .draw()
 })

祝遇到这个问题的人好运.如果你有任何问题问我.我现在知道如何解决这个问题了.

So good luck who has this problem. If you have any problem ask me. I know how to solve this problem now.

就像 andrewjames 在回答中所说的那样,我们使用 Accent 中和来解决这个问题.

Like andrewjames said on the answers we solve this problem with Accent neutralise.

这篇关于JQuery datatablejs 土耳其语字符搜索问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-19 10:48