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() 不能正确管理复选框