JQuery автозаполнение на большом массиве - PullRequest
0 голосов
/ 05 октября 2010

Я использую автозаполнение Jquery с локальным массивом размером ~ 5000, каждое слово ~ 10 символов.Я инициализирую объект следующим образом:

.autocomplete({matchContains: true, minLength: 3, delay: 700, source: array1, max: 10, highlight: true })

Проблема в том, что когда я начинаю печатать, требуется много времени (иногда происходит сбой браузера), пока не отобразится результат.

Что я могу сделать?

Спасибо

Ответы [ 3 ]

2 голосов
/ 05 октября 2010

Вы можете использовать AJAX для извлечения массива вместо помещения его в HTML, увеличения задержки и требуемого minLength перед запросом к серверу, чтобы уменьшить совпадения.

1 голос
/ 05 октября 2010

Я бы поступил так, как сказал Дарин Димитров, но я бы также сделал .Take (10) (или какое-то произвольное число, которое вам подходит) в быстром выражении linq на стороне сервера. Это уменьшило бы набор результатов и все еще стало бы более точным, поскольку пользователь продолжает печатать.

0 голосов
/ 05 октября 2010

Используете ли вы стандартный jQuery плагин автозаполнения ?Если это так, я не знаком с параметром «source», который вы использовали.

Правильный синтаксис этого плагина: autocomplete( url or data, [options] ).Похоже, ваша версия работает с параметром «source» (хотя во время сбоя браузера), поэтому я запутался.Если происходит сбой браузера, я ожидаю, что проблема связана с JavaScript.

Я рекомендую попробовать:

$('whatever').autocomplete(array1,{
    matchContains: true, 
    minLength: 3, 
    delay: 700,  
    max: 10, 
    highlight: true 
});
...