JQuery DataTable плагин. Как уменьшить количество обращений к серверу при вводе пользователем в поле поиска? - PullRequest
0 голосов
/ 21 февраля 2011

Название задает вопрос.Я использую плагин dataTable на странице.Хотя я изначально думал, что функция поиска по типу текста была крутой, она быстро стала проблемой на заднем плане, так как она без необходимости начинает отправлять запросы на сервер, когда пользователь начинает печатать.Я хочу ограничить это только отправкой запроса на сервер, если в поле поиска набрано N или более символов.

Я еще не нашел способ сделать это ?.Кто-нибудь знает, как это сделать?

[Edit]

Ниже приведен типичный фрагмент кода, показывающий использование dataTable для динамического извлечения данных с сервера:

  $('#elem_id').dataTable({
    'bProcessing': true,
    'bServerSide': true,
    'oLanguage': {
        'sLengthMenu': 'Show <select>'+
        '<option value="25" selected="true">25</option>'+
        '<option value="50">50</option>'+
        '<option value="100">100</option>'+
        '</select> entries'
    },
    'sAjaxSource': "/getdata"
 });

Как видно из фрагмента, нет (очевидного?) Способа отловить нажатия клавиш из поля поиска на странице - я что-то упустил?

Я использовал следующеекод (селектор правильно определяет «окно поиска»), но он не работал:

$('#elem_id_filter > :input[type="text"]').change(function(event){
    event.preventDefault();
    alert('Clicked');
    return false;
});

Как это исправить?

1 Ответ

0 голосов
/ 21 февраля 2011

Вы можете попытаться отправить запрос на сервер, только если строка поиска имеет определенную длину.

e.x. проверьте на стороне клиента 'searchstring'.length ()> определенное значение

function keystrokeHanlder(){
   var searchstring =  this.text();
   if(searchstring.lenght%5==0)
       ServerRequest(searchstring);
}

Я предполагаю, что вы прикрепили KeyHrokeHandler к текстовому полю или тому, что вы используете чтобы получить ввод строки поиска. Это довольно грубо, но должно сделать работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...