javascript - 如何将对象映射到表单字段?

标签 javascript jquery forms

我有一个像这样的对象:

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/

相关文章:

javascript - 在 html() 之前删除Class

jquery - 垂直导航子菜单应该与 div 容器重叠

javascript - 如何为引用图像 url 编写 javascript,以便在使用相同脚本的任何页面上编写图像和显示?

PHP:这对恶意输入安全吗?

javascript - Angular : ngView and functions not working right away?

javascript - 使用 onShow 和 onLoad 为 dijit.layout.ContentPane 创建程序

Javascript 阻止代码中的默认 onclick

javascript - 在事件类 css bootstrap 中添加背景图片

javascript - 根据选择值更改表单操作 - 使用 JavaScript

javascript - Parsley JS 未验证