如何在提交之前从表单序列化()中获取和替换数据?
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=×tamp=
我只是想将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
得到的对象组装回字符串中?以上是关于如何在提交之前从表单序列化()中获取和替换数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring 获取之前捕获 Spring Security 登录表单?