3

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

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

我的问题是:这是一个有效的解决方案吗?我的意思是,它的大量表单输入和验证在旧计算机上可能会更慢,这意味着在将屏蔽 div 附加到正文并保护表单不提交之前可能需要一些时间。我可以简单地听函数并检测它是否返回一些东西吗?如果延迟我的理解,我需要在每次返回值之前解析,这意味着 60-70 行新代码,这是混乱和不可取的。

有没有人曾经遇到过这个问题并以 100% 的准确度和优雅度解决它?

4

2 回答 2

4

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

$('#myForm').submit(function() {
    if (!stillValidating())
       //submit form
    else
       //handle however you deem necessary.
});
于 2012-12-26T09:08:20.263 回答
0

您首先需要停止表单提交的默认行为,然后您必须检查表单输入是否有效,如果是,则进入 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);
            }

        });
    });
于 2012-12-26T10:00:42.497 回答