1

我有一个功能可以在按下回车键或按下提交按钮时工作......我正在使用这个......

    $('#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 是一个相当长的过程,因为它会访问一些外部库,如果有人让它多次关闭,它会给出一些奇怪的结果(多个结果)

我该如何防止这种情况发生?有点需要计时器或锁之类的...

4

2 回答 2

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;
    }
});
于 2013-09-08T11:47:01.127 回答
1

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

于 2013-09-08T11:46:48.483 回答