Jquery加载JSON,更新表单字段

Posted

技术标签:

【中文标题】Jquery加载JSON,更新表单字段【英文标题】:Jquery load JSON, update form fields 【发布时间】:2016-12-19 13:05:21 【问题描述】:

我目前正在使用以下内容加载一些 JSON 数据,然后将 JSON 名称与表单字段名称匹配并更新表单值。

data: 'id': id,
      url: 'load.php',
      success: function(data) 
        for (var i in data) 
            $('input[name="'+i+'"]').val(data[i]);
            
         

load.php 以 json 格式的数据返回特定 ID 的结果。

这有效并且正在更新我的表单input 字段,没有问题。

我遇到的问题是选择选项并选择正确的选项以及复选框并设置正确的状态。

有没有办法循环遍历 JSON 数据并让它更新每个表单字段,无论是输入、复选框还是正确选择?

谢谢

【问题讨论】:

【参考方案1】:

您可以决定对元素 type 执行的操作。 selectinput 应该可以与 .val() 一起正常工作。对于复选框,您需要prop 来检查它们。

success: function(data) 
    for (var i in data) 
        var element = $('input[name="'+i+'"]');

        if( element.is("[type=checkbox]") ) 
            element.prop("checked", data[i]); // maybe adjust your select decision here
                                              // I don't know your JSON
        
        else 
            element.val(data[i]);
        
    
 

【讨论】:

【参考方案2】:

最好的解决方案是 - 在您的 json 响应中添加另一个键。例如说 - 我们添加了 fieldType

//sample json response
[ 
 fieldType: 'checkbox',
 name: 'zyx',
 value: 12
]

JS代码:

success: function(data) 
 var response = jQuery.parseJSON(data);
 _.each(response, function(key, field, context)
   switch(field.fieldType)
    case 'select':
       $('select["name='+ field.name +'"]').val(field.value);
      break;
    default: //input type text
       $('["name='+ field.name +'"]').val(field.value);
      break;
      
   
 );

【讨论】:

以上是关于Jquery加载JSON,更新表单字段的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery 在页面加载时关注表单输入文本字段?

Rails - 为啥远程提交我的表单后 jQuery 不加载

文本字段值已更新并保存,但当再次加载表单并单击按钮时,字段会重置为默认值

如何将动态json加载到jquery数据表

将文本字段更新为 JSON 字符串 - Javascript/JQuery [重复]

jQuery 和 Django 表单验证重新加载和提交事件监听器