jquery序列化及回填form数据

jquery序列化form

提交表单时取数大致有两种方式,1.用jquery找到所有值提交到后台,2.用工具自动序列化表单值。第一种代码量太大,所以使用第二种方式。

序列化

jquery序列化表单常用两种方式:serializeArray()、serialize()

  • serializeArray() 方法通过序列化表单值来创建对象数组。
  • serialize()则序列化成字符串。

序列化后添加变量

  • serializeArray使用push({“name”:“sex”,“value”:“男”})
  • serialize则拼接字符串 dataParam +"&"+“sex=男”

过滤元素

使用序列化时需要form中各元素包含name属性,若不包含则不会序列化。
某些字段不可用时disabled = “disabled”,序列化也会过滤掉。
若需要序列化但form表单不可用,使用 readonly属性。

回填数据

在开发中常遇到一种情况:
显示一条记录的详细内容,而在table中无法全量显示,这样就需要重新发请求获取数据回填到模态框或其他页面。但手动回填数据是一个量很大的工作,应提取工具类来完成。
下面使用jQuery的基础上来扩展了工具。

$.fn.loadJsonToForm = function(json){
    try{
        var key,value,tagName,type,arr;
        for(x in json){
            key = x;
            value = obj[x];
            this.find("[name='"+key+"']").each(function(){
                tagName = $(this)[0].tagName;
                type = $(this).attr('type');
                if(tagName=='INPUT'){
                    if(type=='radio'){
                        $(this).attr('checked',$(this).val()==value);
                    }else if(type=='checkbox'){
                        arr = value.split(',');
                        for(var i =0;i<arr.length;i++){
                            if($(this).val()==arr[i]){
                                $(this).attr('checked',true);
                                break;
                            }
                        }
                    }else{
                        $(this).attr('placeholder',value);
                    }
                }else if(tagName=='SELECT'){
                    $(this).selectpicker('val', value);
                }else if(tagName=='TEXTAREA'){
                    $(this).attr('placeholder',value);
                }

            });
        }
    }catch(e){
        alert("加载失败");
    }
}

这个方法使用了 this.find("[name=‘ssss’"),即找到该窗口下的所有匹配name。这样写的好处是确保赋值操作只在该form元素下。不会赋值给其他from里。这样强后端的代码都会减少(减少了html的修改name的量,可以使用同一个名字,也减少了后台从查询sql的量。不用来回改变名字以适应前端的字段名)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值