我有一个像这样的对象:
var settings = {
Name: "Fairy Tail",
Feature:
{
Translate: true,
Share: true
}
}
还有一个表格
<form>
<input type="text" name="Name" />
<input type="checkbox" name="Feature.Translate" />
<input type="checkbox" name="Feature.Share" />
</form>
如何让对象“自动”填充表单(无需手动设置每个字段的值)?
最佳答案
您可以这样做(jsfiddle 更复杂的示例),假设您首先设置了settings
变量:
var assignValue = function(n, v){
var field = jQuery('form input[name="'+n+'"]');
if (field.attr('type')=='text'){
field.val(v);
} else if (field.attr('type')=='checkbox') {
field.prop('checked',v);
}
}
var assignSettings = function(list, prefix){
if (typeof prefix != 'undefined'){
prefix += '.';
}else{
prefix = '';
}
for (item in list){
if ((typeof list[item]=='string')||(typeof list[item]=='boolean')){
assignValue(prefix+item,list[item]);
}else if(typeof list[item]=='object'){
var n1 = item;
assignSettings(list[n1],prefix+n1);
}
}
}
assignSettings(settings);
而且这个解决方案不像我迄今为止看到的版本中的其他解决方案那样受到限制 - 它支持您给出的情况,并且可以轻松扩展以支持不同类型的字段和更多级别。
关于javascript - 如何将对象映射到表单字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6720393/