【问题标题】:how to convert variable name into index string of object jquery如何将变量名转换为对象jquery的索引字符串
【发布时间】:2016-01-18 04:10:47
【问题描述】:

当我根据输入表单的form中的内容进行循环时 我会取属性名作为数据的选择器元素和对象索引数组,但是索引是变量名

如何将变量名转换为对象数组上的字符串索引 数据?

它旨在使表单中的输入可以从数据对象数组中自动填充

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>

【问题讨论】:

  • 你试过jquery.loadJSON吗?
  • 是的,当然。来自ajax响应的真实数据,但为了便于编写我手动创建。如数据变量中所见
  • 但我很难将 jquery 变量名 "value" 理解为 object array index ,例如 "value" 成为索引 "id"从而成为 " data.id " @Arvind

标签: javascript jquery arrays json object


【解决方案1】:

无需对相同的数据运行两次。您可以简单地这样做来填写您的表格:

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/

代码遍历所有表单输入字段,检查字段名称是否作为数据对象中的键存在,如果找到该键,则将字段值设置为数据对象中的值

【讨论】:

  • 谢谢@Stefan Dochow,这是一种更有效的方式
猜你喜欢
  • 2013-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-13
  • 1970-01-01
相关资源
最近更新 更多