Welcome

首页 / 脚本样式 / jQuery / JQuery,实现表单 转Json以及Json赋值表单

(function ($) {

    //初始化表单

    //$("#forms").initForm(json);

    $.fn.initForm=function (options) {

        //默认参数

        var defaults = {

            jsonValue: options,

            isDebug: false   //是否需要调试,这个用于开发阶段,发布阶段请将设置为false,默认为false,true将会把name value打印出来

        }

        //设置参数

        var setting = defaults;

        var form = this;

        jsonValue = setting.jsonValue;

        //如果传入的json字符串,将转为json对象

        if ($.type(setting.jsonValue) === "string") {

            jsonValue = $.parseJSON(jsonValue);

        }

        //如果传入的json对象为空,则不做任何操作

        if (!$.isEmptyObject(jsonValue)) {

            var debugInfo = "";

            $.each(jsonValue, function (key, value) {

                //是否开启调试,开启将会把name value打印出来

                if (setting.isDebug) {

                    console.log("name:" + key + "; value:" + value);

                    debugInfo += "name:" + key + "; value:" + value + " || ";

                }

                var formField = form.find("[name='" + key + "']");

                if ($.type(formField[0]) === "undefined") {

                    if (setting.isDebug) {

                        alert("can not find name:[" + key + "] in form!!!");    //没找到指定name的表单

                    }

                } else {

                    var fieldTagName = formField[0].tagName.toLowerCase();

                    if (fieldTagName == "input") {

                        if (formField.attr("type") == "radio") {

                            $("input:radio[name='" + key + "'][value='" + value + "']").attr("checked", "checked");

                        } else {

                            formField.val(value);

                        }

                    } else if (fieldTagName == "select") {

                        //do something special

                        formField.val(value);

                    } else if (fieldTagName == "textarea") {

                        //do something special

                        formField.val(value);

                    } else {

                        formField.val(value);

                    }

                }

            })

            if (setting.isDebug) {

                console.log(debugInfo);

            }

        }

        return form;

    };

    //将表单转为json

    //var json=$("#forms").toJson();

    $.fn.toJson = function()

    {

        var o = {};

        var a = this.serializeArray();

        $.each(a, function() {

            if (o[this.name]) {

                if (!o[this.name].push) {

                    o[this.name] = [o[this.name]];

                }

                o[this.name].push(this.value || '');

            } else {

                o[this.name] = this.value || '';

            }

        });

        return o;

    };

})(jQuery)