, я использую плагин jQuery DataTables в своем приложении, и многие из моих строк таблицы и фильтров содержат специальные символы, в частности амперсанды (&) в них. Когда я пытаюсь выполнить фильтрацию по этим столбцам, все записи исчезают, и отображается сообщение «Соответствующие записи не найдены».
Я пробовал кодировать (т.е. htmlspecialchars) и декодировать (т.е. htmlspecialchars_decode) строки до того, как они будут напечатаны на странице, но, похоже, ни один из них не работает.
Пример: http://jsfiddle.net/gkdcZ/3/
Есть идеи, почему это может происходить, и как я могу это исправить?
HTML:
A&B
Jones, Brandon
01/02/2003
JavaScript:
$("#filter_col_1").change( function() {
$('#results').dataTable().fnFilter(
'\\b' + $("#filter_col_1").val() + '\\b',
1,
true,
false
);
} );
] ОБНОВЛЕНИЕ №1: Проблема возникает только тогда, когда вы ограничиваете столбец. См. DataTables API . Прекрасно работает, если для параметра установлено значение «null». http://jsfiddle.net/gkdcZ/4/
ОБНОВЛЕНИЕ №2: Чуть ближе. Добавление функции для замены HTML-объектов работает для определенных символов (например, амперсандов), но не работает для других символов (например, восклицательных и вопросительных знаков). См. http://jsfiddle.net/cz6Bs/4/
'\\b' + htmlEntities($('#filter_col_1').val()) + '\\b'
function htmlEntities(str) {
return String(str).replace(/&/g, '&')
.replace(//g, '>')
.replace(/"/g, '"');
}