2015-05-08 51 views
5

我有一個簡單的表單,詢問您是否確定要提交。糾正失敗驗證後,jQuery表單不提交

$(document).ready(function(){ 
    $("form#myform").on('submit', function(e) 
    { 
     if (!confirm('Are you sure?')){ 
     e.preventDefault(); 
     } 
     else { 
     console.log("submitting..."); 
     } 
    }); 
}); 

提交表單,點擊「確定」到「你確定」提示,表單提交就好了。

--refresh頁面,清潔slate--

提交表單,點擊取消對「你確定」的提示。表格未按預期提交。再次提交表單,點擊「確定」提示,表單仍然不會提交,「提交...」會被記錄到控制檯。從這以後,表單將永遠不會提交,直到我刷新頁面並在第一次點擊「確定」時提示。

如果我換

e.preventDefault();

返回FALSE;

沒有變化,完全相同的行爲。

我完全難住了。我究竟做錯了什麼?

編輯: 這是jsFiddle鏈接https://jsfiddle.net/8ac3Lgzg/。該小提琴中的HTML和JavaScript與我的項目中的代碼完全相同。我在上面描述的問題不會發生在jsFiddle上運行,但在我的項目中。

+0

你可以發佈一個堆棧片段或jsFiddle顯示問題? – j08691

+0

你是積極的,它不提交?你檢查過網絡請求日誌嗎?這可能是後端問題。所提供的代碼似乎沒有包含任何問題。 –

+0

您的提交按鈕的名稱是「submit」嗎? – atmd

回答

-2

嘗試這種方式

function SendForm(){ 
    if (!confirm('Are you sure?')){ 
     return false; 
    } 
    else { 
     console.log("submitting..."); 
     return true; 
    } 
} 

把功能sendForm在提交按鈕這樣

<input type="submit" value="submit" onclick="return SendForm();" /> 

明顯,因爲當你提交表單時,瀏覽器重新加載

不顯示在控制檯上的任何東西
0

你的代碼完美地工作,這裏是一個jsFiddle展示它。我從字面上複製和粘貼,必須有一些其他JavaScript影響您的網頁上的某個表單。

jsFiddle link below 

http://jsfiddle.net/xbhvqvp7/1/

也可能是值得檢查瀏覽器的網絡日誌,看看形式實際上是被提交

+0

我在OP中發佈了一個jsFiddle,解釋了在那裏工作的代碼,但沒有在我的項目中。表單根本沒有提交(網絡日誌中沒有任何內容)。 但是,您對其他可能會與之混淆的javascript做了一些說明,我現在正在調查這些javascript。 – jsdude

0

出現該問題是由於一段代碼在我的球隊另一名開發人員寫我沒有意識到,它附加到每個表單並將其緩存在提交處理結果上。因爲我的表單在驗證失敗時會返回false,所以即使通過了驗證,該結果也會被緩存用於下次嘗試提交。

不想破壞他的代碼,我的解決方案是爲我的表單添加一個屬性「no-cache」,並且我更新了他的方法來檢查該屬性。這已經解決了我的問題。

感謝大家的幫助,我非常感謝!