搜索表单中的ajax延迟问题

时间:2015-06-02 21:43:16

标签: javascript jquery ajax django

我正在尝试为我的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()......

任何想法我做错了什么?

2 个答案:

答案 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();