我正在使用大小为 ~5000 的本地数组的 Jquery 自动完成,每个单词都是 ~10 个字符。我正在像这样初始化对象:
.autocomplete({matchContains: true, minLength: 3, delay: 700, source: array1, max: 10, highlight: true })
问题是,当我开始输入时,需要很长时间(有时浏览器崩溃)才能显示结果。
我能做些什么?
谢谢
我正在使用大小为 ~5000 的本地数组的 Jquery 自动完成,每个单词都是 ~10 个字符。我正在像这样初始化对象:
.autocomplete({matchContains: true, minLength: 3, delay: 700, source: array1, max: 10, highlight: true })
问题是,当我开始输入时,需要很长时间(有时浏览器崩溃)才能显示结果。
我能做些什么?
谢谢
您可以使用 AJAX 来获取数组而不是将其放入 HTML,增加延迟和minLength
查询服务器之前所需的时间,以减少匹配。
我会像 Darin Dimitrov 所说的那样做,但我也会在服务器端的快速 linq 语句中执行 .Take(10) (或一些听起来不错的任意数字)。这将减少结果集,并且随着用户继续键入仍然会变得更加准确。
你在使用标准的jQuery 自动完成插件吗?如果是这样,我不熟悉您使用的选项参数“source”。
该插件的正确语法是:autocomplete( url or data, [options] )
. 听起来您的版本与“源”选项参数一起使用,(尽管在浏览器崩溃时)所以我很困惑。如果浏览器崩溃,我希望问题与 javascript 有关。
我建议尝试:
$('whatever').autocomplete(array1,{
matchContains: true,
minLength: 3,
delay: 700,
max: 10,
highlight: true
});