2013-01-17 32 views
0

提交表單時可以同時執行兩個操作嗎?同時提交表單和呼叫功能

這是我的例子:

<input type="checkbox" name="setM" id="m" value="1" onClick="this.form.submit();setM();" /> 

還有另一種方式提交表單,並在同一時間處理功能? 當我提交表單我做了一些過程,然後結果我處理setM。所以我需要提交將是第一個。

編輯

<script type="text/javascript"> 
function DoAllThese() { 
    One(); 
    Two(); 
    Three(); 
    Four();} 

我可以調用這個函數,那麼一個會做SETM功能和兩將提交的具體形式?

+0

你可以處理'onsubmit'事件。但是,必須澄清:表單提交和函數調用應該是同步還是異步?我不認爲後者可能會發生,因爲表單提交會導致離開頁面。 –

+0

表單設置爲的「操作」是什麼? – pete

+0

後,提交返回到相同的頁面。它使過程和回到同一頁面。那麼我想處理setM函數 –

回答

2

除非你正在使用AJAX您運行不會對頁面上的任何影響,因爲該頁面將表單提交的結果來代替任何提交之後的行爲。如果您在提交表單後使用AJAX,即使在最好的情況下,在提交後操作的效果與頁面被卸載以預期新頁面被加載之間也會有一些競爭條件。

由於您的問題確實無法確定您要做什麼,因此我只提供一些一般準則。

  1. 在提交表單前運行任何可能影響表單提交的操作,然後只在這些表單完成後才提交表單。如果表單提交是以成功完成函數爲條件的,那麼確保在失敗時阻止默認操作(表單提交)。

  2. 如果您想根據表單提交的結果來影響當前頁面,請使用AJAX並完全通過JavaScript處理表單提交,其中的函數依賴於在AJAX成功回調中運行的表單提交200 OK響應,如果你手動處理AJAX)。

  3. 不要將您的行爲應用於標記,而應將處理程序附加到使用JavaScript的元素。這將有助於使JavaScript代碼易於理解,因爲這些行爲將在您的代碼中進行本地化,而不是分散在整個文檔中。

1

當您提交表單時,瀏覽器將離開頁面,因此推測您所描述的「過程」是服務器端頁面。

您不能讓JavaScript在下一個頁面上運行瀏覽器剛剛離開的頁面上的事件處理程序。

你將需要:

  • 使用XMLHttpRequest提交的數據(阿賈克斯)
  • 有包括JS要運行
0

HTML

下一頁
<form name="myform" action="test.html" onsubmit="verify()"> 
    <!-- FIELDS --> 
</form> 

的Javascript

function verify() 
{ 
    One(); 
    Two(); 
    Three(); 
} 
+0

這就是我寫的。問題是如果在處理函數One()後,函數Two()可以提交特定的表單。 –

+1

如果其中一個函數返回true,表單將被髮送。 –

2

其他兩個人在一個非常美麗的方式解釋,我也說你想做什麼將有可能與使用Ajax提交表單。

<form> 


<button onclick="ajaxsubmit()">Submit</button> 
</form> 

你的Ajax:

function ajaxsubmit(){ 
    // do your other functions 
$.ajax({ 
    // ajax send 
}).done(function(){ 
    // submitted successfully 
}); 
}