2015-01-01 26 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