Django App - Ajax自动完成2个字符和1秒延迟

时间:2015-05-18 22:49:03

标签: jquery python ajax django

我在我的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);
}

1 个答案:

答案 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请求,并在设置新定时器之前取消任何先前的定时器。但这可能会让事情变得更加复杂,没有充分的理由。