Easyui Form增加myLoad方法,使其支持二级数据对象,Fix版本

之前因为要使用easyui的from控件load功能,从学习班看到代码,但是不能load到easyui的控件,修正版代码:

$.extend($.fn.form.methods, {
    myLoad : function (jq, param) {
        return jq.each(function () {
            load(this, param);
        });

        function load(target, param) {
            if (!$.data(target, "form")) {
                $.data(target, "form", {
                    options : $.extend({}, $.fn.form.defaults)
                });
            }
            var options = $.data(target, "form").options;
            if (typeof param == "string") {
                var params = {};
                if (options.onBeforeLoad.call(target, params) == false) {
                    return;
                }
                $.ajax({
                    url : param,
                    data : params,
                    dataType : "json",
                    success : function (rsp) {
                        loadData(rsp);
                    },
                    error : function () {
                        options.onLoadError.apply(target, arguments);
                    }
                });
            } else {
                loadData(param);
            }
            function loadData(dd) {
                var form = $(target);
                var formFields = form.find("input[name],select[name],textarea[name]");
                formFields.each(function(){
                    var name = this.name;
                    var value = jQuery.proxy(function(){try{return eval('this.'+name);}catch(e){return "";}},dd)();
                    var rr = setNormalVal(name,value);
                    if (!rr.length) {
                        var count = loadOther(name, value);
                        if (!count) {
                            $("input[name=\"" + name + "\"]", form).val(value);
                            $("textarea[name=\"" + name + "\"]", form).val(value);
                            $("select[name=\"" + name + "\"]", form).val(value);
                        }
                    }
                    setPlugsVal(name,value);
                });
                options.onLoadSuccess.call(target, dd);
                $(target).form("validate");
            };

            function loadOther(name, val){
                var count = 0;
                var pp = ['textbox','numberbox','slider'];
                for(var i=0; i<pp.length; i++){
                    var p = pp[i];
                    var f = $(target).find('input['+p+'Name="'+name+'"]');
                    if (f.length){
                        f[p]('setValue', val);
                        count += f.length;
                    }
                }
                return count;
            }
            function setNormalVal(key, val) {
                var rr = $(target).find("input[name=\"" + key + "\"][type=radio], input[name=\"" + key + "\"][type=checkbox]");
                rr._propAttr("checked", false);
                rr.each(function () {
                    var f = $(this);
                    if (f.val() == String(val) || $.inArray(f.val(), val) >= 0) {
                        f._propAttr("checked", true);
                    }
                });
                return rr;
            };
            function setPlugsVal(key, val) {
                var form = $(target);
                var cc = ["combobox", "combotree", "combogrid", "datetimebox", "datebox", "combo"];
                var c = form.find("[comboName=\"" + key + "\"]");
                if (c.length) {
                    for (var i = 0; i < cc.length; i++) {
                        var combo = cc[i];
                        if (c.hasClass(combo + "-f")) {
                            if (c[combo]("options").multiple) {
                                c[combo]("setValues", val);
                            } else {
                                c[combo]("setValue", val);
                            }
                            return;
                        }
                    }
                }
            };
        };
    }
});

使用方法

$('#fromId').form('myLoad',{});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值