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]; }); }
Alper Bey, büyük İ harfi için çalışmıyor bu kontrol. Yardımcı olabilir misiniz?
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]; });
}
Teşekkür ederim Alper Bey. Çok işime yaradı.
TEŞEKKÜRLER SÜPERMEN
2 gündür uğraşıyordum. Çok yararlı oldu çok teşekkür ederim, emeğinize sağlık.
süpersiniz
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)
});
});
});
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/