Estoy usando el complemento jQuery DataTables en mi aplicación, y muchas de las filas y filtros de mi tabla tienen caracteres especiales, específicamente símbolos y símbolos (&) en ellos. Cuando intento filtrar en estas columnas, todos los registros desaparecen y muestra "no se encontraron registros coincidentes".Cómo filtrar resultados con caracteres especiales usando el plugin jQuery DataTables?
He intentado codificar (es decir, htmlspecialchars) y descodificar (es decir, htmlspecialchars_decode) las cadenas antes de que se impriman en la página, pero ninguna parece estar funcionando.
Ejemplo: http://jsfiddle.net/gkdcZ/3/
Cualquier idea por qué esto podría estar sucediendo, y cómo puedo solucionarlo?
HTML:
<select id="filter_col_1" name="filter_col_1">
<option value="">Select</option>
<option value="A&B">A&B</option>
<option value="C">C</option>
<option value="D">D</option>
</select>
<tr>
<td>A&B</td>
<td>Jones, Brandon</td>
<td>01/02/2003</td>
</tr>
JavaScript:
$("#filter_col_1").change(function() {
$('#results').dataTable().fnFilter(
'\\b' + $("#filter_col_1").val() + '\\b',
1,
true,
false
);
});
ACTUALIZACIÓN # 1: problema parece ocurrir sólo cuando se limita la columna. Ver DataTables API. Funciona bien cuando el parámetro se establece en "nulo". http://jsfiddle.net/gkdcZ/4/
ACTUALIZACIÓN # 2: Un poco más cerca. Agregar una función para reemplazar entidades HTML funciona para ciertos caracteres (es decir, signos y signos), pero no funciona para otros caracteres (es decir, signos de exclamación y signos de interrogación). Ver http://jsfiddle.net/cz6Bs/4/
'\\b' + htmlEntities($('#filter_col_1').val()) + '\\b'
function htmlEntities(str) {
return String(str).replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"');
}
puede sustituir a la 'Y' con 'y'? así: str_replace ("&", "and", $ input); – azzy81
No entiendo lo que intentas hacer. ¿Puedes publicar tu código Javascript por favor? – pomeh
Acaba de agregarse en JavaScript arriba. Intento filtrar los resultados de búsqueda en función de una selección de cuadro desplegable. Mi cuadro desplegable tiene algunos elementos con caracteres especiales, lo que está causando el problema. – Michael