【问题标题】:bind JSON properties to a form将 JSON 属性绑定到表单
【发布时间】:2011-09-08 11:50:24
【问题描述】:

我有一个 JSON 对象和一个 <form>。如果 JSON 对象具有名称与表单名称匹配的属性<input>,我希望输入显示该属性的值。有没有使用 JQuery 的简单方法?

var json = {foo: 'foo', bar: 'bar};
def form = $('#myform');

// something magical that assigns JSON property values to form inputs with matching names

有问题的表格看起来像:

<form id = "#myform" action="/foo/bar/">
  <input name="foo"/>
  <input name="bar"/>
</form>

【问题讨论】:

标签: javascript jquery


【解决方案1】:

您可以运行一个循环来搜索元素并输入值:

$.each(json, function(key, value) {
    form.find("input[name='" + key + "']").val(value);
});

对于形式:

<form id="myform">
    <input type="text" name="foo" />
    <input type="text" name="other" />
</form> 

使用 .field 代替输入是使用 textarea 并选择

【讨论】:

  • 就我而言,我想将 JSON 属性与输入 name 进行匹配
  • expertCode 已修改名称。但它不适用于输入以外的其他项目。
  • 这似乎只能在 json 对象深处工作一层
【解决方案2】:

你的意思是这样的:

var json = {foo: 'foo', bar: 'bar}; 
def form = $('#myform');

for(var prop in json){
    $("#myform input[name="+prop+"]")[0].value = json[prop];
}

【讨论】:

    【解决方案3】:

    试试这个:

    var json = {foo: 'foo1', bar: 'bar1'};
    
    for(var key in json) {
        if($('#myform input[name="'+key+'"]').length > 0){
            $('#myform input[name="'+key+'"]').attr('value',json[key]);
        }
    }
    

    我想这就是你想要的 ;)

    在此处查看示例:http://jsfiddle.net/expertCode/FgwHe/

    【讨论】:

      【解决方案4】:

      你可以使用我的插件,很简单:https://github.com/devWaleed/JQuery-JSON-Form-Binding

      如果您想以自己的方式填充数据,则回调是可选的。

      $("#myform").jsonToForm({ 
          data: {name: "Waleed", age: 23, gender: "Male"},
          callbacks: {
              age: function(value){
                  $('[name="age"]').val(value+1);
              }
          }
      
      });
      

      【讨论】:

      【解决方案5】:

      您要么找到所有输入并获取输入名称并检查它们是否在 json 中,例如:http://jsbin.com/ulelik/edit

      var json = {foo: 'foo', bar: 'bar',  ContactEmail: "ContactEmail", fooo2 : "trigunatmak kulkarni"};
      var inputs = $('input', '#myform').each(function() {
        if (json[this.name]) 
        {
          this.value = json[this.name];
        }
      
      });
      

      您选择所有输入并通过它们的名称检查它们是否在 json 对象中具有属性,然后它将使用该属性值作为输入值。

      【讨论】:

      • 这是一个边界线link-only answer。您应该在此处扩展您的答案以包含尽可能多的信息,并使用该链接仅供参考。
      猜你喜欢
      • 1970-01-01
      • 2017-01-18
      • 2023-04-07
      • 1970-01-01
      • 2012-10-08
      • 2020-12-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      相关资源
      最近更新 更多