2015-01-01 29 views
1

所以我想每次點擊一個表單'提交'輸入時都會觸發一個Javascript函數,所以我可以用Javascript處理提交。從輸入元素獲取表單和FormData對象?

我有以下幾點:

$(':submit').click(function(){ 
    var currentForm = $(this)[0].form; 
    event.preventDefault(); //Stop default form submission 
    var formData = new FormData(currentForm); 

    $.ajax({/*Handle form submission here*/}); 
}); 

我已經嘗試了一些不同的變化,讓currentForm,但由於某些原因,它總是不確定的?

這是不是正確的方法來得到一個form對象,然後將其轉換爲在Javascript中的FormData對象?我試過How to get the form parent of an input?上的幾個解決方案,但都沒有工作。

任何想法?

回答

3

你需要通過event

$(':submit').click(function(event){ 
    var currentForm = $('form')[0]; 
    event.preventDefault(); //Stop default form submission 
    var formData = new FormData(currentForm); 

    $.ajax({/*Handle form submission here*/}); 
}); 

UPDATE

所以它出現$('form')返回一個jQuery對象,而是一個HTML元素需要傳遞到FormData.[0]做到這一點。這與撥打$('form').get(0)相同。所以使用$('form')[0]

+0

好的,我已經提出了建議的變化;但現在表單沒有正確提交。它不會在POST請求中傳遞任何內容。當使用'var formData = new FormData($('form')[0]);'它工作正常,任何想法爲什麼這將工作,而目前的解決方案不會? – user3420034

+0

很難說沒有看到你的實際代碼,但是如果你只在頁面上有一個表單,'$('form')[0]'工作就行了。 – jmore009

+0

我想我剛剛發現了這個問題。當進行警報時,currentForm對象是'object Object',而$('form')[0]的類型是'object HTMLFormElement'。我是否需要將currentForm轉換爲此特定類型? – user3420034