0
  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 中使用回调函数。

4

1 回答 1

1

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

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

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

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

于 2012-05-23T10:33:32.190 回答