Welcome

首页 / 脚本样式 / jQuery / Jquery实现json对象对表单赋值

(function($){  

    $.fn.extend({  

        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){  

                        alert("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){  

                    alert(debugInfo);  

                }  

            }  

            return form;    //返回对象,提供链式操作  

        }  

    });

})(jQuery)