将嵌套对象数据添加到窗体中
Add nested object data to a form
我正在从可以是多层的对象向表单添加数据。
表单示例
<form id="myForm">
<input name="foo" />
<input name="bar" />
</form>
数据示例
var myData = {
level1: {
foo: 'hello',
level2: {
bar: 'greetings'
}
}
}
将数据添加到表单
$.each(data, function (i, e) {
var field = $('[name="' + i + '"]');
if (field.is('input')) field.val(e);
});
现在显然这行不通,所以我有两个选择。
A) 压扁对象
var myResult = {
level1 : '',
foo : 'hello',
level2 : '',
bar : 'greetings'
}
B) 递归遍历对象
但我认为即使要做A,我也需要做B。所以B是更快的选择。现在,我如何递归地遍历一个对象?我一直在研究这个fiddle,并试图实现递归for循环,但该循环不会从对象属性中提取值。我被使用jq$.each宠坏了,但我不知道它在这种情况下是否有效。
http://jsfiddle.net/6d7L9qpw/1/
这里有一个迭代器函数来获取键值:
var myData = {
level1: {
foo: 'hello',
level2: {
bar: 'greetings'
}
}
}
function recIterator(object, inputKey) {
for(var key in object) {
if(typeof object[key] == "object") {
return recIterator(object[key], inputKey);
} else {
if(key==inputKey) {
return object[key];
}
}
}
}
$(function() {
$("input[type=text]").each(function(ele) {
var key = $(this).attr("name");
$(this).val(recIterator(myData, key));
});
});
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.js"></script>
<form id="myForm">
<input name="foo" type="text" />
<input name="bar" type="text" />
</form>
希望你能从这里继续:)
相关文章:
- Meteor-将选定窗体中的对象添加到集合中
- 如何添加CSS&JavaScript进入Windows窗体应用程序C#.net
- 将嵌套对象数据添加到窗体中
- 如何将任意数量的图像动态添加到源字符串位于数据库中的 Web 窗体
- 在窗体中添加值
- 在ASP.Net web窗体/MVC中动态加载和添加字段
- 使用窗体向下拉菜单添加值
- Asp.Net 将多个窗体添加到一个窗体时,用户控件无法正常工作
- 在窗体中动态添加数组文本框
- 当事件侦听器作为部分页面的一部分加载时,如何将事件侦听器添加到窗体中
- 如何向窗体动态添加单选按钮
- 在引导程序窗体中单击时添加行
- 具有用户添加的行的窗体,以及对每行的输入元素查找
- 向窗体滚动条添加延迟
- 如何仅在窗体更改时向窗口添加事件侦听器
- Symfony -在一个窗体中添加多个窗体
- AngularJS $编译的元素不会被添加到它们所在的窗体中
- 添加后退,前进,播放/暂停按钮和setInterval()的窗体
- 如何将图片添加到窗体中作为预览
- 为jquery移动滑块窗体添加一个比例