jQuery form.serialize() 没有给出当前值

Posted

技术标签:

【中文标题】jQuery form.serialize() 没有给出当前值【英文标题】:jQuery form.serialize() not giving the current values 【发布时间】:2017-03-29 15:05:13 【问题描述】:

我有这个函数应该从我的表单提交序列化的值。 使用document.getElementById(form_id) 我得到正确的表单和值,如果我用data = $(form).serialize(); 序列化此表单,则值不正确。 其他问题的答案表明名称或被禁用的字段是原因,但这里不是这种情况。

这里是我的函数,结果来自 console.log。

var submit_form = function(form_id)
    form = document.getElementById(form_id);
    console.log(16, form);
    data = $(form).serialize();
    console.log(17, data);
    url = "/routmeda/checklist/" + form_id
    $.post( url, data, function( data ) storeLogo.reload(); );
  

未选中“aanvraagformulier”复选框。

这里是第 16 行控制台上的输出,正确

从第 17 行开始,serialize 表示复选框已打开,这是加载表单时的情况。

如何获得正确的序列化?

【问题讨论】:

表单中是否还有其他同名的复选框?我听说某处的复选框没有完全正确地通过serialize() 函数。 您是使用 javascript 还是在浏览器中手动检查复选框?如果您使用的是 javascript,我们可以查看执行此操作的代码吗? 通过在浏览器中单击,它是唯一具有该名称的字段或复选框 无法复制:jsbin.com/rowadekoca/edit?html,js,console,output @PraveenKumar 当我在网上的示例中尝试这个时,就像你的 jsbin 一样,这可以正常工作,这很难在网上重现 【参考方案1】:

我通过破坏显示表单的 ExtJs 窗口解决了这个问题,似乎这个窗口上的关闭按钮以前没有这样做。 document.getElementById(form_id); 给出了当前窗口/表单的值,而 jQuery 的选择器给出了那个窗口/表单的幽灵版本。 我不认为这是一个 ExtJs 问题,否则我会将其包含在我的问题中。感谢您的建议。

【讨论】:

以上是关于jQuery form.serialize() 没有给出当前值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery 的 form.serialize 但排除空字段

为啥输入类型 = 文件的更改没有用 `form.serialize()` 标识

Jquery form.serialize() 不能正确管理复选框

jQuery 序列化表单数据 serialize() serializeArray()

jquery form表单序列化

jQuery:serialize() 表单和其他参数