自定义方法将form表单中的数据转为json

有时候我们需要将页面的form表单的数据,进行格式化成json,比如easyui的回显功能,那么我们可以自己用jquery写一个方法实现:

这里有一个easyui的隐藏窗口,里面有一个表单,当表单输入查询条件后,点击查询,窗口关闭. 但是需要再次点开这个隐藏窗口,之前的搜索条件回显:

<scritp>
    $(function(){
        // 先将body隐藏,通过点击事件显示弹窗
        $("body").css({visibility:"visible"});
    }
</scritp>

<body>
.....
    <!--easyui的数据网格-->
    <div region="center" border="false">
        <table id="grid"></table>
    </div>

    <!--搜索弹窗-->
    <div class="easyui-window" id="searchWindow">
    <form id='searchForm'>
    XXXX
    <input>标签
    XXXX
    <button id='searchBtn'>
    </form>
    </div>
</body>

点击工具栏上的查询,弹窗如图:
这里写图片描述

写一个serializeJson方法

<script type="text/javascript">

    //工具函数 将表单里数据 序列化成json对象
    $.fn.serializeJson=function(){  
        var serializeObj={};  
        var array=this.serializeArray();  
        var str=this.serialize();  
        $(array).each(function(){  
            if(serializeObj[this.name]){  
                if($.isArray(serializeObj[this.name])){  
                    serializeObj[this.name].push(this.value);  
                }else{  
                    serializeObj[this.name]=[serializeObj[this.name],this.value];  
                }  
            }else{  
                serializeObj[this.name]=this.value;   
            }  
        });  
        return serializeObj;  
    }; 
</script>

调用这个方法: easyui的 $(‘#grid’).datagrid(‘load’,data);

$(‘#grid’).datagrid(‘load’,data);easyui中这个方法的意思是加载本地数据进行显示.

$(function(){
        //页面加载完成后为按钮绑定单击事件
        $("#searchBtn").click(function(){
            var data = $("#searchForm").serializeJson();
            //console.log(data);
            //通常一个查询通过一些参数,这种方法可以调用从服务器加载新数据。 
            $('#grid').datagrid('load',data);  

        })  

    })

具体代码:

<!-- 查询快递员-->
<div class="easyui-window" title="查询快递员窗口" closed="true" id="searchWindow" collapsible="false" minimizable="false" maximizable="false" modal="true" style="width: 400px; top:40px;left:200px">
    <div style="overflow:auto;padding:5px;" border="false">
        <form id="searchForm">
            <table class="table-edit" width="80%" align="center">
                <tr class="title">
                    <td colspan="2">查询条件</td>
                </tr>
                <tr>
                    <td>工号</td>
                    <td>
                        <input type="text" name="courierNum" />
                    </td>
                </tr>
                <tr>
                    <td>收派标准</td>
                    <td>
                        <input type="text" name="standard.name" />
                    </td>
                </tr>
                <tr>
                    <td>所属单位</td>
                    <td>
                        <input type="text" name="company" />
                    </td>
                </tr>
                <tr>
                    <td>类型</td>
                    <td>
                        <input type="text" name="type" />
                    </td>
                </tr>
                <tr>
                    <td colspan="2"><a id="searchBtn" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-search'">查询</a> 

                        <script type="text/javascript">

                            //工具函数 将表单里数据 序列化成json对象
                            $.fn.serializeJson=function(){  
                                var serializeObj={};  
                                var array=this.serializeArray();  
                                var str=this.serialize();  
                                $(array).each(function(){  
                                    if(serializeObj[this.name]){  
                                        if($.isArray(serializeObj[this.name])){  
                                            serializeObj[this.name].push(this.value);  
                                        }else{  
                                            serializeObj[this.name]=[serializeObj[this.name],this.value];  
                                        }  
                                    }else{  
                                        serializeObj[this.name]=this.value;   
                                    }  
                                });  
                                return serializeObj;  
                            }; 
                            $(function(){
                                //页面加载完成后为按钮绑定单击事件
                                $("#searchBtn").click(function(){
                                    var data = $("#searchForm").serializeJson();
                                    //console.log(data);
                                    //通常一个查询通过一些参数,这种方法可以调用从服务器加载新数据。 
                                    $('#grid').datagrid('load',data);  

                                    $("#searchWindow").window("close");
                                })  

                            })
                        </script>
                    </td>
                </tr>
            </table>
        </form>
    </div>
</div>

点击查询按钮后,窗口关闭,再次点击查询,查询条件还在
这里写图片描述

猜你喜欢

转载自blog.csdn.net/zzzgd_666/article/details/80328619