2016-01-18 38 views
0

当我根据表格中的内容进行循环时,输入表格 我将属性名称用作选择器元素和对象数据的索引数组,但索引是变量名如何将变量名称转换为对象jquery的索引字符串

如何从一个变量名转换为字符串索引的对象阵列数据的 上?

它的目的是使在形式输入可以自动从数据

var data = { 
 
    id: "4", 
 
    Model: "804", 
 
    Description: "AXIAL SETTER,100MM, MAGNETIC BASE" 
 
}; 
 

 
var names = []; 
 

 
if ($('#form').length == 1) { 
 
    $('#form :input').each(function() { 
 
    names.push($(this).attr('name')); 
 
    }); 
 
    $.each(names, function(key, value) { 
 
    $('[name="' + value + '"]').val(data.value); 
 
    //value should be change with name, 
 
    //for example : 
 
    // $('name="Description"').val(data.Description); 
 

 
    }); 
 
}
<form action="#" id="form" class="form-horizontal"> 
 
    <input type="hidden" name="id" /> 
 
    <br/> 
 
    <input type="text" name="Model" placeholder="Model Of product" /> 
 
    <br/> 
 
    <input type="text" name="Description" placeholder="Description Of product" /> 
 
    <br/> 
 
    <button type="submit" class="btn-save">save</button> 
 
</form>

+0

您是否试过'jquery.loadJSON'? – Arvind

+0

当然可以。真正的数据来自ajax响应,但为了便于手动创建。如数据变量 – Iwan

+0

所示,但我很难将jquery变量名称**“值”**理解为**对象数组索引**,例如“value”作为索引“id”,从而变成**数据。 ID“** @Arvind – Iwan

回答

0

无需在相同的数据两次运行的对象阵列被填充。你可以简单地这样做,以填补你的表单:

var data = { 
    id: "4", 
    Model: "804", 
    Description: "AXIAL SETTER,100MM, MAGNETIC BASE" 
}; 

if ($('#form').length == 1) { 
    $('#form :input').each(function() { 
    if (typeof data[$(this).attr('name')] != 'undefined'){ 
     $(this).val(data[$(this).attr('name')]); 
    } 
    }); 

} 

看一看https://jsfiddle.net/nfq22d9r/1/

代码通过所有形式的输入字段,检查是否字段的名称是存在,因为在数据对象的关键运行并将字段值设置为数据对象中的字段值,如果发现密钥

+0

谢谢@Stefan Dochow,这是一种更高效的方法 – Iwan

相关问题