我在我的Django应用程序中有这段代码来创建简单的自动完成搜索建议框。如何将Ajax
限制为至少2个字符,如何为Ajax
执行搜索查询添加1秒延迟?
$(function(){
$('#search').keyup(function() {
$.ajax({
type: "POST",
url: "/search/",
data: {
'search_text' : $('#search').val(),
'csrfmiddlewaretoken' : $("input[name=csrfmiddlewaretoken]").val()
},
success: searchSuccess,
dataType: 'html'
});
});
});
function searchSuccess(data, textStatus, jqXHR)
{
$('#search-results').html(data);
}
答案 0 :(得分:1)
假设#search
可能是文本输入字段,您可以在ajax请求之前添加以下代码:
// get the value that the user has typed
var v = $(this).val();
// don\'t go on if less than 3 chars or
// some other key was pressed that did not change the data
if (v.length < 3 || v == $(this).data('prev-val')) return;
// set the old value as the new one
$(this).data('prev-val', v);
// now call ajax
在问题中发表评论后,这并不涉及任何时间延迟。定时器可以很容易地用于触发ajax请求,并在设置新定时器之前取消任何先前的定时器。但这可能会让事情变得更加复杂,没有充分的理由。