2013-03-12 77 views
1

我想在提交下面顯示的類的任何表單後調用函數。然而,這似乎並沒有爲我工作(表單提交,但提交按鈕保持活動,加載圖像未顯示)。使用jquery提交表單後調用函數

$(document).ready(function() { 
    $('.uniForm').submit(function() { 
     $('#loadingImage').show(); 
     $(':submit',this).attr('disabled','disabled'); 
     return true; 
    }); 
}); 

下面是一些HTML:

<form class="uniForm" id="formABC"> 
//...form.... here 
</form> 

<img src="loadimage.gif" style="display: none;" id="loadingImage"> 

沒有人看到什麼內在的錯誤這一點,將阻止正常工作的事情?

我有一種感覺,它只是沒有被正確調用。我可以通過這樣的HTML來自己調用它嗎?

<button type="button" class="primaryAction" alt="Submit Form" onclick="$('#formABC').submit();">Submit Form</button> 
+0

您希望在重新加載頁面加載圖像? – 2013-03-12 12:39:47

+0

基本上,因爲處理表單需要幾秒鐘的時間,所以我希望禁止再次按下提交按鈕,同時還要顯示加載圖像,以便他們可以看到它被按下。 – Shackrock 2013-03-12 12:40:22

+0

您的當前窗體是否有任何機會使用'name =「submit」'輸入元素? – Boaz 2013-03-12 12:42:09

回答

3

追隨你的評論,似乎處理函數的結合到submit事件可能發生在form元素已被加載到DOM之前。

理想情況下,您應該只在DOM完成加載後綁定事件處理程序。

例如:

$(document).ready(function() { 
    $('.uniForm').submit(function() { 
     ... 
    }); 
}); 
+0

修改'$(this.form).submit();'這似乎並沒有做到。就好像它在等待提交完成之前完成該功能,這是否可能? – Shackrock 2013-03-12 13:21:02

+0

提交表單時,會立即觸發'submit'事件。通過添加'alert('submitted!')'或類似的函數來確保處理程序實際上是綁定和正確執行的。如果在提交時沒有看到提示提示,則說明有問題。另外,請確保在提交之前和之後沒有JS錯誤。 – Boaz 2013-03-12 13:37:37

+0

好的...所以警報顯示出來。所以我不得不多看看這一點。也許我的圖像顯示代碼搞砸了,讓我玩弄它。 – Shackrock 2013-03-12 13:57:56

0

嘗試其他的東西:

$('.uniForm input[type=submit]').click(function(){ 
    $('.uniForm').submit(); 
    //doStuffafterSubmit 
}); 
0

放在提交輸入/按鈕的ID和嘗試這個辦法:

$('#mySubmitButton').click(function(e) { 
    e.preventDefault(); 
    e.stopPropagation(); 
    $(this).attr('disabled','disabled'); 
    $('#loadingImage').show(function() { 
     $(this.form).submit(); 
    }); 

}); 
+0

我也試過這個。這一個會正確加載圖像,但不會提交表單。 – Shackrock 2013-03-12 13:21:28

+0

@ Shackrock - 它輸出任何錯誤?嘗試通過'$('#myForm')。submit();' – 2013-03-12 13:28:23