如何检测该函数是否仍在运行?或者我可以钩入返回事件

JavascriptJquery How can i detect if the function is still running? or can i hook in to return event?

本文关键字:或者 运行 我可以 事件 返回 何检测 检测 是否 函数      更新时间:2023-09-26

让我来描述一个标准情况:有一个表单有多个输入(大约60-70个)。每个输入都需要验证。如果无效,则返回false。我需要从multiclicking(multisubmitting)保护表单,以防止多个AJAX请求与图形反馈。

我的解决方案是在AJAX请求发送之前调用自定义文档事件,该事件立即创建div与宽度和height 100%, z-index 9998,其中包含加载gif和一些消息。在完成AJAX请求时调用另一个,这只是从DOM中删除该元素。

我的问题是:这是一个有效的解决方案吗?我的意思是,它的许多表单输入和验证可能在较旧的计算机上较慢,这意味着它可能需要一些时间,才能将shielddiv附加到主体并保护表单免于提交。我可以简单地监听函数并检测它是否返回一些东西吗?在我的理解不同的情况下,我需要在每次返回值之前进行解析,这意味着60-70行新代码,这是混乱和不希望的。

是否有人以前遇到过这个问题,并且100%准确而优雅地解决了它?

不要依赖"shielding div"来防止多次提交。只需在提交前钩入表单检查的提交事件:

$('#myForm').submit(function() {
    if (!stillValidating())
       //submit form
    else
       //handle however you deem necessary.
});

你首先需要停止表单提交的默认行为,然后你必须检查表单输入是否有效,如果是,然后它去ajax调用。

    $('#form').submit(    function(e){     
        e.preventDefault();
        var $form = $(this);
      // check if the input is valid
        if(! $form.valid()) return false;
       $.ajax({
            type: 'POST',
            url: 'add.php',
            data: $('#form').serialize(),
            success: function(response) {
                $("#answers").html(response);
            }
        });
    });