2011-03-09 9 views
0

我有一個包含兩個表單的頁面,兩個表單都有一個唯一的ID。當任一表單提交時,我需要使頁面淡出。但是,它不會工作。jQuery .submit()不會執行,不管是什麼

下面的代碼

$(document).ready(function(){ 
     $('#container').fadeOut(0); 
     $('#container').fadeIn(500); 
    }); 

    $('form').submit(function(){ 
     alert("Hello."); 
     $('#container').fadeOut(500); 
    }); 

正如你可以從代碼中看到,它應該顯示一個警告,但它沒有,它甚至沒有淡出的頁面。 我的表單包含一個設置爲只讀的文本輸入和一個提交按鈕。

在此先感謝。

+0

或者,我想知道當用戶離開頁面時是否有淡出頁面的方法。 – 2011-03-09 17:24:15

回答

1

試試這個:

$(document).ready(function(){ 
    $('#container').fadeOut(0); 
    $('#container').fadeIn(500); 

    $('form').submit(function(e){ 
     e.preventDefault(); 
     var form = this; 
     $('#container').fadeOut(500, function() { 
      form.submit(); 
     });  
    }); 
}); 

提交綁定是文檔之外準備就緒,它被執行時可能找不到表單標籤。

的jsfiddle例子 - http://jsfiddle.net/KbaG3/

+0

謝謝,但頁面仍然不會淡出。它看起來像fadeOut被忽略,瀏覽器直接跳到下一頁。 – 2011-03-09 17:36:56

+0

我已經更新了答案並添加了一個jsfiddle示例來執行您想要的操作。它現在停止提交事件,然後在淡出容器後手動提交表單。 – 2011-03-09 21:54:13

0

你或許應該移動提交事件寄存器功能的文件準備功能裏面,這樣你可以肯定的DOM是註冊功能之前準備就緒。

如果這沒有幫助,看看是否有任何JavaScript錯誤被拋出頁面,可能會暫停執行。

0

除非你包括這個JS在頁面的底部,您應該移動$(document).ready()塊內的$(form)....代碼

$(document).ready(function(){ 
     $('#container').fadeOut(0); 
     $('#container').fadeIn(500); 


    $('form').submit(function(){ 
     alert("Hello."); 
     $('#container').fadeOut(500); 
    }); 
}); 

這是因爲你的元素不存在,當你結合的情況下它

0

嘗試:

jQuery(function($){ 
    $('#container').hide().fadeIn(500); 

    $('form').submit(function(){ 
     alert("Hello."); 
     $('#container').fadeOut(500); 
    }); 
}); 

我認爲這是一個更乾淨的代碼和,也沒有衝突的證明。

相關問題