• ~随笔B023~jquery获取json的大小,并在json中为当前页面循环赋值


    本代码使用情况:

      二次录入与一次录入的数据进行实时比对。——controller向前台传model,而model中附带了多个list

      1.model.addAttribute("currencyModelJson", JSON.toJSONString(currencyModel)); // 用于回写----注意:向前台传时需把带list的数据转为json格式

      2.前台接收传来的json进行解析

      3.赋值到页面

      页面形式如:<input type="radio" name="fsjhBaseInfo.nation" value="1"  checkVal="${currencyModel.fsjhBaseInfo.nation!}" >

      操作结束后形式:<input type="radio" name="fsjhBaseInfo.nation" value="1" checkval="" oldval="true">

    <#include "record.html">
     
    <script>
    $(function(){
        var currencyModelJson = ${currencyModelJson};
        /* console.log(currencyModelJson)
        copyAttrValue(currencyModelJson.fsjhBaseInfoList,"fsjhBaseInfo");
        copyAttrValue(currencyModelJson.fsjhBaseIllNexusList,"fsjhBaseIllNexus"); 
         */
         //var size=count(currencyModelJson);
          //循环赋值
         for(var key in currencyModelJson){
             if($.isArray(currencyModelJson[key])){
                 copyAttrValue(currencyModelJson[key],key.substring(0,key.length-4));
             }        
        }        
    })
    
    function count(o){
        var t = typeof o;
        if(t == 'string'){
            return o.length;
        }else if(t == 'object'){
            var n = 0;
        for(var i in o){
            n++;
        }
        return n;
        }
    return false;
    }
    //用于将list的对象赋值,旧值和新值
    //obj 为对象列表,namePrefix:html name前缀
    function copyAttrValue(obj,namePrefix){
        if(obj!=null && obj.length>0){//对象列表有值
                //输入域为text 类型
                $("input[type='text']").each(function(){
                    var $this = $(this);
                    var name=$this.attr("name");
                    
                    if(name != null && name != ""){  //判断name是否存在
                        if(name.split(".")[0]== namePrefix){//如果name与当前传入的列表对象匹配,取值给input赋值即可
                            var realName=name.split(".")[1];//根据当前输入框的name取对象里面的字段命名
                            $this.attr("oldVal",obj[0][realName]);//增加旧值属性
                            
                            if(obj.length>1){//给value赋值
                                $this.val(obj[1][realName]);
                            }
                        }
                    }
                })
                //输入域为hidden 类型
                $("input[type='hidden']").each(function(){
                    var $this = $(this);
                    var name=$this.attr("name");
                    if(name != null && name != ""){  //判断name是否存在
                         if(name.split(".")[0]== namePrefix){//如果name与当前传入的列表对象匹配,取值给input赋值即可
                            var realName=name.split(".")[1];//根据当前输入框的name取对象里面的字段命名
                            if(realName!="isUse"){
                                $this.attr("oldVal",obj[0][realName]);//增加旧值属性
                                
                                if(obj.length>1){//给value赋值
                                    $this.val(obj[1][realName]);
                                }
                            }
                        } 
                    }
                })
                //输入域为radio 类型
                $("input[type='radio']").each(function(){
                    var $this = $(this);
                    var name=$this.attr("name");
                    if(name != null && name != ""){  //判断name是否存在
                        if(name.split(".")[0]== namePrefix){//如果name与当前传入的列表对象匹配,取值给input赋值即可
                            var realName=name.split(".")[1];//根据当前输入框的name取对象里面的字段命名
                            if(obj[0][realName]==$(this).val()){
                                 $this.attr("oldVal",true);//增加旧值属性
                            }else{
                                 $this.attr("oldVal",false);//增加旧值属性
                            }
                            if(obj.length>1){//给value赋值
                                $("input[name='"+name+"'][value='"+obj[1][realName]+"']").attr("checked",true);  //根据Value值设置Radio为选中状态
                            }
                        }
                    }
                })
                //输入域为checkbox 类型
                $("input[type='checkbox']").each(function(){
                    var $this = $(this);
                    var name=$this.attr("name");
                    if(name != null && name != ""){  //判断name是否存在
                        if(name.split(".")[0]== namePrefix){//如果name与当前传入的列表对象匹配,取值给input赋值即可
                            var realName=name.split(".")[1];//根据当前输入框的name取对象里面的字段命名
                            $this.attr("oldVal",obj[0][realName]);//增加旧值属性
                            
                            if(obj.length>1){//给value赋值
                                $("input[name='"+name+"'][value='"+obj[1][realName]+"']").attr("checked",true);  //根据Value值设置checkbox为选中状态
                            }
                        }
                    }
                })
                //输入域为select 类型
                $("select").each(function(i){
                    var $this = $(this);
                    var name=$this.attr("name");
                    if(name != null && name != ""){  //判断name是否存在
                        if(name.split(".")[0]== namePrefix){//如果name与当前传入的列表对象匹配,取值给input赋值即可
                            var realName=name.split(".")[1];//根据当前输入框的name取对象里面的字段命名
                            $this.attr("oldVal",obj[0][realName]);//增加旧值属性
                            
                            if(obj.length>1){//给value赋值
                                $this.val(obj[1][realName]);
                            }
                        }
                    }
                })
            }
    }
    
    
    </script>
    <script type="text/javascript" src="/js/BJXH01/two_entry.js"></script>

      

  • 相关阅读:
    MySQL 8.0复制性能的提升(翻译)
    mongodb节点配置指南
    ProxySQL读写分离
    MySQL JOIN原理
    pt-summary
    Unity3D安卓打包参数配置与兼容性的关系分析
    unity3d 动画卡帧 动画合成 动画层次
    单机游戏计时器防作弊解决方案
    Unity3D占用内存太大的解决方法
    AndroidManifest.xml配置
  • 原文地址:https://www.cnblogs.com/gaojl/p/9889242.html
Copyright © 2020-2023  润新知