2012-05-23 28 views
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被一次又一次地被稱爲 -

    $( '形式#frmBanners')提交(函數() { 回報FUNC2();//這是在preValidateUrls() })之後調用的;

我如何在一個乾淨的方式做到這一點,所以當我需要在兩者之間添加任何同步/異步函數的明天,我只需要在一個地方進行編輯,像 -

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

PS - 我知道,如何在javascript中使用回調函數。

回答

1

如何在提交處理程序只有一個功能:

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

內。然後你func_test_all()您設置Deferred pipereturn false;末,以防止直接提交表單。

我必須運行,所以我沒有完整的代碼示例;我希望你能弄清楚延期;-)只會在3小時左右回來。

+0

請看看你是否可以回答這個相關的問題http://stackoverflow.com/questions/13234386/using-deferred-with-jquery-ajax-calls-and-async-processes-along-with-user-confir –

相關問題