繁体   English   中英

设置同步/异步功能序列的正确方法都可以停止表单提交和进一步处理?

[英]Correct way to set up a sequence of synchronous/asynchronous functions all of which can stop form submission and further processing?

  1. 我需要在表单提交按钮单击时依次调用一些函数-

    func1()-> func2()-> func3()...-> func7()-> ...

  2. 所有这些功能都进行某种验证/检查,如果验证失败,则向用户显示一个确认对话框。 如果用户确认,则执行队列中的下一个功能。

  3. 这些功能中的任何一个都可以执行一些异步任务,例如发送Ajax请求,并根据结果显示给用户一些确认对话框。

细节

我具有以下结构的异步函数-

function preValidateUrls(evt)
{
   evt.preventDefault();

   $.ajax({
       type: "POST",
       url: posturl+"?"+params,
       dataType: "json",
       success: function(res)
           { 
                 //display some confirmation dialog
                 if(confirm(msg)) 
                 {
                       $("form#frmBanners").submit();
                 }
            }
        });
}

我该怎么做呢?

首先,我只定义了两个同步函数,如下所示:

<form onsubmit="return func3()">
...
...
<input type="submit" onclick="return func1()"/>
</form>
  • 首先调用func1(),显示确认对话框,然后显示func2()...

  • 然后,我定义了异步函数func2()(具有与上面所示的相同的结构),并这样调用它:

    $(“ input#formsubmitbutton”)。click(func2);

但是,正如预期的那样,这并不等待func1()的确认。

  • 如果我喜欢以下内容,则函数func2会一次又一次地被调用-

    $('form#frmBanners')。submit(function(){return func2(); //在preValidateUrls()之后调用));

如何以一种干净的方式执行此操作,因此明天需要在两者之间添加任何同步/异步功能时,只需要在一个位置进行编辑即可,例如-

func1() -> func2() -> func3() ... -> func7()

PS-我知道,如何在JavaScript中使用回调函数。

提交处理程序中只有一个函数怎么样:

<form action="" onsubmit="return func_test_all();">
</form>

然后在func_test_all()内部设置一个Deferred pipereturn false; 最后,以防止立即提交表单。

我必须运行,所以我没有完整的代码示例。 希望您能弄清楚Deferred ;-)只会在3小时左右回来。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM