如何在提交之前从表单序列化()中获取和替换数据?

Posted

技术标签:

【中文标题】如何在提交之前从表单序列化()中获取和替换数据?【英文标题】:How to get and replace data from form serialize() before submitting? 【发布时间】:2015-07-03 16:41:47 【问题描述】:

我需要使用 jQuery 提交一个表单,但在提交之前我想更改其中一个表单字段的值 而不 向用户显示更改。我知道这不是最好的方法,但我的软件要求这样做。

目前我使用:

var submit = $("#submitform").serialize();

序列化数据,然后使用

$.post('/post', submit)

我拥有的序列化数据是:

entry%5Bbody%5D=hello+and+welcome&addedContexts=presentation&context=prese ntation&selectedContexts=&statementid=&timestamp=

我只是想将entry%5Bbody%5D 的值更改为其他值。

我知道我可以在字符串上使用 Regex(我找不到哪个?),但也许您知道更优雅的解决方案?比如先序列化表单,再反序列化,改变我需要的值,再序列化?

谢谢!

【问题讨论】:

***.com/questions/2403179/…的可能重复 【参考方案1】:

使用$("#submitform").serializeArray() 并在数组中搜索name 属性等于"entry[body]" 的项目并编辑其value 属性。

// convert form data to array
var data = $("#submitform").serializeArray();

// edit data here
// using ES6
data.find(item => item.name === 'entry[body]').value = "something else";
// OR using ES5
data.forEach(function (item) 
  if (item.name === 'entry[body]') 
    item.value = "something else";
  
);

// then POST
$.post('/post', $.param(data));

【讨论】:

好的,但是我如何将使用serializeArray 得到的对象组装回字符串中?

以上是关于如何在提交之前从表单序列化()中获取和替换数据?的主要内容,如果未能解决你的问题,请参考以下文章

jquery:如何在提交之前从表单中删除空白字段?

如何在 Spring 获取之前捕获 Spring Security 登录表单?

如何在不提交 HTML 表单的情况下从数据库中获取数据? [复制]

如何从反应提交多部分/表单数据到表达?

PHP表单提交失败,如何返回原值?

如何在使用 wordpress 以自定义表单提交之前获取图像 url 并发送邮件?