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

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

如何防止这种情况发生?有点需要计时器或锁或其他东西......

最佳答案

您可以添加一个标志来防止 .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;
    }
});

关于javascript - 如何阻止一个人多次加载一个函数jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18683277/

相关文章:

javascript - 使用解构为已定义的变量赋值

jquery - 单击时添加值以形成数组

javascript - 如何使用 javascript/jquery 使用多个确认对话框

javascript - jQuery 与 native 原型(prototype)冲突

javascript - 谷歌图表 : Line Chart with dynamic month names in hAxis

javascript - Freeswitch sdp 响应缺少摘要

javascript - 使用 js 删除 <div> (无 JQuery)

javascript - Raphael js库获取属性值

javascript - jQuery:无法获取单选按钮值

javascript - 在具有相似类的多个元素上切换类