如何阻止一个人多次加载一个函数jquery

时间:2013-09-08 11:43:35

标签: javascript jquery

我有一个在按下回车键或按下提交按钮时有效的功能......我正在使用它......

    $('#searchBtn').click(function(){
    var str = $('#searchTxt').val();
    $.get(searchStr+"&text=" + str, function(data){
        fetchPhoto(data);
    }, "json");
});

$('#searchTxt').keydown(function(event){
    if (event.which == 13)
        var str = $('#searchTxt').val();
        $.get(searchStr+"&text=" + str, function(data){
        fetchPhoto(data);
    }, "json");
});

fetchPhoto是一个非常漫长的过程,因为它会攻击一些外部库,如果有人让它多次关闭,它会产生一些奇怪的结果(多个结果)

如何防止这种情况发生?需要一个计时器或锁或什么......

2 个答案:

答案 0 :(得分:2)

您可以添加一个标记,以防止多次触发.get()

试试这个:

var ok_to_click = true; // this var will prevent the $.get() to be fired when its value is false
$('#searchBtn').click(function () {
    var str = $('#searchTxt').val();
    if (ok_to_click) {
        $.get(searchStr + "&text=" + str, function (data) {
            fetchPhoto(data);
            ok_to_click = true;
        }, "json");
        ok_to_click = false;
    }

});

$('#searchTxt').keydown(function (event) {
    if (event.which == 13) var str = $('#searchTxt').val();
    if (ok_to_click) {
        $.get(searchStr + "&text=" + str, function (data) {
            fetchPhoto(data);
            ok_to_click = true;
        }, "json");
        ok_to_click = false;
    }
});

答案 1 :(得分:1)

您可以禁用按钮,直到您的过程完成,然后启用它。