2013-04-08 24 views
0

我想要添加到登錄表單的效果,當效果完成(如1秒),它然後進入到PHP。jQuery的.submit()不會將數據傳送到PHP當setTimeout的

我試圖在.submit中用e.preventDefault()創建一個setTimeout()函數,這樣我就可以將它延遲一秒,但問題是它沒有接收數據,而是它轉到空白的php網頁,用於檢查輸入的數據。

而當e.preventDefault()時被帶走的PHP的作品,但它並沒有給我第二次來執行動畫第一然後去PHP文件來檢查所有的數據

這裏是我的代碼

<script> $("#effectsExplode").submit(function (e) { 
     var form = this; 
     e.preventDefault(); 
     $("#effectsExplode").toggle("explode"); 
     setTimeout(function() { 
      form.submit(); 
     },1000); 
    }); 
</script> 




<form id="effectsExplode" class="form-1" method="post" action="checklogin.php"> 
    <p class="field"> 
     <input type="text" name="login" placeholder="Username or email"> 
     <i class="icon-user icon-large"></i> 
    </p> 
    <p class="field"> 
     <input type="password" name="password" placeholder="Password"> 
     <i class="icon-lock icon-large"></i> 
    </p> 
    <p class="submit"> 
     <button id="buttonexplode" type="submit" name="loginsubmit"> 
      <i class="icon-arrow-right icon-large"></i> 
     </button> 
    </p> 
</form> 

回答

2

您已經創建了一個無限循環。舉例來說,如果我有一個按鈕,此javascript:

$('button').click(function() { 
    var b = this; 
    $('#status').append('Clicked<br/>'); 
    setTimeout(function() { 
     b.click(); 
    }, 1000); 
}); 

http://jsfiddle.net/b9chris/yaNdc/

當我點擊該按鈕,我會得到另一個「點擊」信息附加到狀態標籤每秒......永遠。這是因爲jQuery爲它手動觸發的事件觸發其所有事件處理程序;在這種情況下,你附加到'提交',然後解僱'提交',並回到你自己的代碼,這阻止了表單實際上提交。

最有可能在本地測試機上此表單提交情況幾乎是瞬間,但一旦你把它拿出來在Web服務器上的真人版將需要更長的時間,你的動畫將有時間玩。最簡單的解決方案是擺脫ev.preventDefault(),讓它提交和播放,而提交需要時間。

+0

Okie我會努力的..順便說一句感謝您對我的問題的解釋 – 2013-04-08 02:06:07