我需要使用jQuery提交表单,但在提交之前,我想更改其中一个表单字段的值,而不显示对用户的更改.我知道这不是最好的方式,但我的软件要求.
目前我使用:
var submit = $("#submitform").serialize();
要序列化数据,然后使用它们提交
$.post('/post',submit)
我的序列化数据是:
entry%5Bbody%5D=hello+and+welcome&addedContexts=presentation&context=prese ntation&selectedContexts=&statementid=×tamp=
我只想将entry [body]的值更改为其他内容.
我知道我可以在字符串上使用正则表达式(我找不到哪个?),但也许你知道一个更优雅的解决方案?比如首先序列化表单,然后反序列化它,改变我需要的值,然后再次序列化它?
谢谢!
解决方法
使用
$("#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));