【发布时间】:2016-08-14 23:17:33
【问题描述】:
我正在尝试使用 jquery 自动完成功能,但我希望只加载一次源代码。 我不想每次输入字母时都调用 ajax 动作类。我也不想使用缓存,因为它是浏览器级别的缓存。所以基本上我需要它只想加载我的列表一次并使用自动完成功能。这可能吗?任何想法都会非常有帮助..提前感谢
【问题讨论】:
标签: jquery ajax autocomplete
我正在尝试使用 jquery 自动完成功能,但我希望只加载一次源代码。 我不想每次输入字母时都调用 ajax 动作类。我也不想使用缓存,因为它是浏览器级别的缓存。所以基本上我需要它只想加载我的列表一次并使用自动完成功能。这可能吗?任何想法都会非常有帮助..提前感谢
【问题讨论】:
标签: jquery ajax autocomplete
您可以延迟通话。 看: Javascript onkeyup delayed function call
var _timer = 0;
function DelayedCallMe(num) {
if (_timer)
window.clearTimeout(_timer);
_timer = window.setTimeout(function() {
callMe(num);
}, 500);
}
然后调用 onkeyup 中的函数:
<input type="text" onkeyup="DelayedCallMe(200);"/>
【讨论】:
进行一次 ajax 调用并在成功时构建自动完成功能:
$.getJSON({
url: 'remote_url/',
type: 'GET',
success: function (data) {
$('#autocomplete').autocomplete({
lookup: data,
onSelect: function (suggestion) {
console.log(suggestion)
}
});
},
error: function (res) {
console.log(res)
}
});
【讨论】: