我正在尝试为我的ajaxGet函数设置超时,如here所示。
没有我找到的代码:
$('#search').on('keyup', function() {
var query;
query = $(this).val();
ajaxGet('{% url "distributors:search_dist" %}', {
'query': query
}, function(content) {
$('#distributors').html(content);
// alert(content);
set_favorite();
})
});
它很好用。
在我实施延迟解决方案后,我有:
var delay = (function() {
var timer = 0;
return function(callback, ms) {
clearTimeout(timer);
timer = setTimeout(callback, ms);
};
})();
$('#search').keyup(function() {
delay(function() {
var query;
query = $(this).val();
ajaxGet('{% url "distributors:search_dist" %}', {
'query': query
}, function(content) {
// $('#distributors').html(content);
alert(content);
set_favorite();
})
}, 1000);
});
但这不起作用。我认为问题是JS,因为它甚至不运行ajaxGet()......
任何想法我做错了什么?
答案 0 :(得分:0)
您可以在事件中创建一个setTimeout,如:
$('#search').keyup(function() {
window.setTimeout(function(){
var query;
query = $(this).val();
ajaxGet('{% url "distributors:search_dist" %}', {
'query': query
}, function(content) {
// $('#distributors').html(content);
alert(content);
set_favorite();
})
},1000);
});
答案 1 :(得分:0)
我对JS不太熟悉,但我发现了我的问题:
我必须将query = $(this).val();
替换为query = $('#search').val();