Как фильтровать результаты с помощью специальных символов с помощью подключаемого модуля jQuery DataTables?

, я использую плагин 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, '"');
}

16
задан Michael 30 April 2012 в 16:59
поделиться