【问题标题】:incorrect form serialization with jquery使用 jquery 进行不正确的表单序列化
【发布时间】:2015-07-29 06:37:18
【问题描述】:

在我的 CMS 上,我使用标记为公开的帖子,并在标记为将生成的 html 放入 textarea 的表单上,当我第一次提交(创建新帖子)时,表单被正确序列化。

创建后我的 CMS 追加一个输入(输入文本),其中包含一些特定信息和按钮以进行编辑和删除,过程是相同的,但是当我尝试序列化表单时:

$(e).serialize() // e ----> '#form'

我看到了我的 textarea 的旧值(原始),并且只有在提交(编辑)后我才能得到正确的序列化信息。

我有实时预览,所以 textarea 总是有最近的内容。 . .

问题可能出在哪里?

因为如果我尝试编辑帖子(直接从帖子列表访问),一切正常,并且表单总是正确序列化。

函数代码:

var form_submit = function(e, f){
    console.log('FORM')
    e.preventDefault();
    NProgress.start();
    console.log($(f).serialize()+'&req_type=put')
    $.post(
        f.action, $(f).serialize()+'&req_type=put'
    ).success(function(d){
        // ....
    }).error(function(d){
        // ....
    })
}

【问题讨论】:

  • 没有看到更多代码我不能确定,但​​我想这是因为您将表单数据存储到 e 与原始值,并且您序列化该变量,而不是当前表单值。
  • @sharf 当然,我添加了完整的功能,如果我从原始帖子编辑页面编辑帖子,它可以正常工作,而不是从转换到编辑页面。 . . .
  • #full_mark的默认值是3s还是4s?
  • @sharf 4s。例如,如果我用 1s 创建 textarea,我会看到正确的序列化,但是当我第一次编辑并更改为 2s 时,我会看到 1s,但如果我再次将时间更改为 3s 并提交,我会看到 2s。 .. 第二次提交后我总是看到正确的序列化
  • 每当序列化发生时,它要么使用旧元素进行,要么在更改传播之前发生。

标签: javascript jquery ajax forms serialization


【解决方案1】:

提交后我需要更新textarea的“已查看”文本,

所以这里有一个解决这个奇怪问题的方法......

$('#full_mark').val($('#full_mark').text());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多