【问题标题】:Get form & FormData objects from input element?从输入元素获取表单和 FormData 对象?
【发布时间】:2015-02-28 08:50:59
【问题描述】:

所以我想在每次点击表单“提交”输入时触发一个 Javascript 函数,这样我就可以用 Javascript 处理提交。

我有以下几点:

$(':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? 上尝试了几种解决方案,但都没有奏效。

有什么想法吗?

【问题讨论】:

    标签: javascript jquery html ajax forms


    【解决方案1】:

    你需要通过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*/});
    });
    

    更新

    所以看起来$('form') 返回一个jQuery 对象,但需要将HTML 元素传递给FormData. [0] 这样做。与调用$('form').get(0) 相同。所以使用$('form')[0]

    【讨论】:

    • 好的,我已经进行了建议的更改;但现在表单没有正确提交。它没有在 POST 请求中传递任何内容。使用var formData = new FormData($('form')[0]); 时,它工作正常,有什么想法为什么会起作用而当前的解决方案不起作用?
    • 如果没有看到您的实际代码就很难判断,但如果您在页面上只有 1 个表单并且 $('form')[0] 可以使用它。
    • 我想我刚刚发现了问题。发出警报时的 currentForm 对象是 object Object,而 $('form')[0] 的类型是 object HTMLFormElement。我需要将 currentForm 转换为这种特定类型吗?
    • 问题是我需要这段代码一次在一个页面上处理多个表单。我的实现通常在一个页面上有 6 或 7 个。
    • 我想我现在有一个可行的解决方案;谢谢您的帮助! :-)
    猜你喜欢
    • 1970-01-01
    • 2017-07-13
    • 2016-09-30
    • 2022-07-07
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多