2015-07-11 28 views
0

在我的網站上,我有多個包含表單的頁面。每個表格都有自己獨特的名稱。jquery - 陷阱所有表單提交

某些形式的使用標準的HTML提交按鈕提交,一些使用jQuery和使用簡單的JavaScript函數,像其他人一樣:

function form() 
    { 
    document.getElementById("form").submit(); 
    } 

onchange="form()" 

我希望做的是隨時記錄表單提交。我很高興將其輸出到console.log,一旦我有這個工作..

我會看通過Ajax發送數據到一個新的頁面,然後將其寫入磁盤。

任何人都可以建議如何做到這一點?

感謝

回答

0

你可以嘗試overwritting DOM節點submit()方法和document水平結合jQuery的submit事件,如:

HTMLFormElement.prototype.submit = function() { 
    $(this).submit(); // trigger jq submit handler 
} 

$(document).on('submit', 'form', function (e) { 
    e.preventDefault(); 
    var data = $(this).serialize(); 
    console.log(this, data); 
    // call any ajax method to submit data 
    // >>>> 
}); 

編輯: 如果你想保持提交的默認行爲您可以使用:

HTMLFormElement.prototype._submit = HTMLFormElement.prototype.submit; 
HTMLFormElement.prototype.submit = function() { 
    $(this).submit(); // trigger jq submit handler 
} 

$(document).on('submit', 'form', function (e) { 
    e.preventDefault(); 
    var data = $(this).serialize(); 
    console.log(this, data); 
    this._submit(); // call default prototype 'submit' method 
    // or call it from any ajax callback method e.g 'success' 
}); 
+0

感謝你 - 但我想捕獲所有的輸出到console.log /或磁盤,並有正常的提交表單!那可能嗎 ? – JeffVader

+0

@JeffVader更新了答案。看看它是否適合您的需求? –

+0

對不起,延遲迴復 - 謝謝,我會在今天嘗試。你能告訴這是什麼:'HTMLFormElement.prototype._submit = HTMLFormElement.prototype.submit; HTMLFormElement.prototype.submit = function(){ $(this).submit(); //觸發jq提交處理程序 }' 我可以理解其餘部分:D謝謝 – JeffVader