我想知道如果您已经将该表单序列化,是否有一种简单的方法来填充表单?例如,如果我有var form = $('#myform').serialize()
,我应该如何将这些数据加载到表单中?是否有可用的jquery功能,还是我应该手动设置表单中的所有值?
示例表单:
<form id="myform">
<input type="text" name="first_name"/>
<input type="text" name="last_name"/>
<select name="gender">
<option val=""></option>
<option val="male">Male</option>
<option val="female">Female</option>
</select>
</form>
所以我正在寻找一个快速的&amp;使用序列化数据重新填充相同空白表单的简便方法。
答案 0 :(得分:3)
尽管@ Johan的答案非常好,但到目前为止,对我来说最好的解决方案是formParams。我将表单转换为带有$('#myform').serializeArray()
的json对象,然后通过ajax将其发布到脚本中,并将其保存在数据库中。当我不得不重新填充表单时,我只是使用ajax请求来获取json存储的表单数据并将其与$('#myForm').formParams()
一起使用。
我想知道为什么jquery没有在框架中实现这样的功能......
答案 1 :(得分:1)
使用下面的snippet,但将其更改为使用id / class而不是每个元素的name属性。
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
当您将表单数据放在键值对中时,您可以简单地遍历对象数组并映射值。一些伪代码:
$.each(arr, function(k, v){
$('#newform .' + key).val(v);
});