【发布时间】:2016-02-06 13:52:56
【问题描述】:
我正在尝试在 jQuery Datatables 插件中搜索一些带有特殊字符的单词。
数据表中有一些结果是这样的:
Peinado, Alma_María
Aguilar Castillo, Antonio José
当我尝试搜索“alma_maría”时,会显示第一个结果:
Peinado, Alma_María
当我尝试“alma_maria”(请注意,我使用字符“i”而不是“í”)时,没有显示任何内容。
屏幕截图 1:
截图 2:
有什么方法可以配置数据表在我不使用特殊字符进行搜索时显示特殊字符结果?
我的 HTML/Javascript 代码:
<table class="display table table-bordered table-striped" id="table-colegiados">
<thead>
<tr>
<th>{$TXT.nombre}</th>
<th>{$TXT.ciudad}</th>
<th>{$TXT.email}</th>
<th>{$TXT.telefono}</th>
<th>{$TXT.dni}</th>
<th>{$TXT.colegiado}</th>
<th>{$TXT.asesor}</th>
<th>{$TXT.editar}</th>
<th>{$TXT.borrar}</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<script type="text/javascript">
$.fn.dataTableExt.oApi.fnGetFilteredNodes = function ( oSettings )
{
var anRows = [];
for ( var i=0, iLen=oSettings.aiDisplay.length ; i<iLen ; i++ ) {
var nRow = oSettings.aoData[ oSettings.aiDisplay[i] ].nTr;
anRows.push( nRow );
}
return anRows;
};
$.fn.dataTableExt.afnFiltering.push(function(oSettings, aData, iDataIndex) {
if ( oSettings.nTable == document.getElementById( 'table-colegiados' )){
var asesor = aData[6];
var checked = $('#checkbox_asesores').is(':checked');
if (checked) {
if (asesor == '1') {
return true;
}
} else {
return true;
}
return false;
} else {
return true;
}
});
var oTable = $('#table-colegiados').dataTable({
"aaSorting": [ [0,'asc'] ],
'iDisplayLength': 25,
"bProcessing": true,
"bServerSide": false,
"bDeferRender": true,
"sAjaxSource": "ajax/getColegiados.php",
"fnServerData": function ( sSource, aoData, fnCallback ) {
$.getJSON( sSource, aoData, function (json) {
fnCallback(json)
} );
}
});
$('#checkbox_asesores').on("click", function(e) {
oTable.fnDraw();
});
</script>
【问题讨论】:
-
你使用的是哪个数据库?
-
什么意思?数据来自 JSON。
-
我认为 KishoreSahas 发布的“口音中和”插件是您正在寻找的答案,但我仍然想分享这篇关于这个问题的有趣文章:alistapart.com/article/accent-folding-for-auto-complete
标签: javascript jquery datatables accent-insensitive