jQuery DataTables Türkçe Karakter Arama Sorunu

Merhaba arkadaşlar,

Jquery DataTables kullanımında arama yaparken Türkçe karakter problemi bulunmaktadır. Bunun çözümü içinde js kodlarımızda küçük bir değişiklik yapmamız gerekiyor. dataTables.js dosyamızın içinde “_fnEscapeRegex” fonksiyonumuzu aşağıda belirttiğim şekilde değiştirmek gerekiyor.

iyi çalışmalar

function _fnEscapeRegex ( sVal ) {

    var letters = { "İ": "[İi]", "I": "[Iı]", "Ş": "[Şş]", "Ğ": "[Ğğ]", "Ü": "[Üü]", "Ö": "[Öö]", "Ç": "[Çç]", "i": "[İi]", "ı": "[Iı]", "ş": "[Şş]", "ğ": "[Ğğ]", "ü": "[Üü]", "ö": "[Öö]", "ç": "[Çç]" };
    var acEscape = [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', ', '^', '-' ];
    var reReplace = new RegExp( '(\\' + acEscape.join('|\\') + ')', 'g' );
    sVal=sVal.replace(reReplace, '\\$1');

    return sVal.replace(/(([İIŞĞÜÇÖiışğüçö]))/g, function (letter) { return letters[letter]; });
}

jQuery DataTables Türkçe Karakter Arama Sorunu” hakkında 8 yorum

    1. Alper Kırmızıgül Yazar

      Merhaba,

      DataTable güncellemesi ile birlikte bir çok arkadaşımızdan geri dönüş oldu.
      1.10.20 versiyonu ile birlikte jquery.DataTable.js kodlarımızda aşağıdaki değişikliği yapmanız gerekmektedir.


      /**
      * Escape a string such that it can be used in a regular expression
      *
      * @param {string} val string to escape
      * @returns {string} escaped string
      */
      escapeRegex: function ( val ) {
      var letters = { "İ": "[İi]", "I": "[Iı]", "Ş": "[Şş]", "Ğ": "[Ğğ]", "Ü": "[Üü]", "Ö": "[Öö]", "Ç": "[Çç]", "i": "[İi]", "ı": "[Iı]", "ş": "[Şş]", "ğ": "[Ğğ]", "ü": "[Üü]", "ö": "[Öö]", "ç": "[Çç]" };
      var acEscape = [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^', '-' ];
      var reReplace = new RegExp( '(\\' + acEscape.join('|\\') + ')', 'g' );
      val=val.replace(reReplace, '\\$1');

      return val.replace(/(([İIŞĞÜÇÖiışğüçö]))/g, function (letter) { return letters[letter]; });
      }

      Cevapla
  1. Recep

    Merhaba Alper bey,
    bir input aracılığı ile basit bir arama sayfasında aşağıdaki js kodlarını kullanıyorum. Burada bu problemi nasıl çözebilirim. Büyük, küçük harf ve Türkçe karakter sorunu mevcut.

    Şimdiden teşekkürler.

    $(document).ready(function(){
    $(“#myInput”).on(“keyup”, function() {
    var value = $(this).val().toUpperCase();
    $(“#myList li”).filter(function() {
    $(this).toggle($(this).text().toUpperCase().indexOf(value) > -0)
    });
    });
    });

    Cevapla
    1. Alper Kırmızıgül Yazar

      Merhaba;

      Sanırım aşağıdaki şekilde düzenlerseniz sorununuz çözülür.


      $(document).ready(function(){
      $("#myInput").on("keyup", function() {
      var value = $(this).val().turkishToUpper();
      $("#myList tr").hide()
      $("#myList td").filter(function() {
      if($(this).text().turkishToUpper().indexOf(value) == 0){
      $(this).parent().show();
      }
      });
      });

      String.prototype.turkishToUpper = function(){
      var string = this;
      var letters = { "i": "İ", "ş": "Ş", "ğ": "Ğ", "ü": "Ü", "ö": "Ö", "ç": "Ç", "ı": "I" };
      string = string.replace(/(([iışğüçö]))+/g, function(letter){ return letters[letter]; })
      return string.toUpperCase();
      }

      String.prototype.turkishToLower = function(){
      var string = this;
      var letters = { "İ": "i", "I": "ı", "Ş": "ş", "Ğ": "ğ", "Ü": "ü", "Ö": "ö", "Ç": "ç" };
      string = string.replace(/(([İIŞĞÜÇÖ]))+/g, function(letter){ return letters[letter]; })
      return string.toLowerCase();
      }

      });

      https://jsfiddle.net/vwL0jxdc/52/

      Cevapla

Ali için bir yanıt yazın Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*