1. 程式人生 > >easyui 對form擴展

easyui 對form擴展

focus 驗證 ttr string return orm tip RR als

功能描述

easyui 中 combobox 多選賦值方法如下:

$(‘#cbx‘).combobox(‘setValues‘, [‘01‘,‘02‘])

然而,業務中是以 “01,02” 的形式存儲,並且 combobox 較多,為防止業務數據冗余,影響後期維護,現對 form 進行擴展 myLoad,實現 combobox 在多選(multiple = true)情況下,可以用字符串自動賦值 combobox 的操作,並且不影響 load 原有的功能,比如 "01,02" 可以直接賦值給 combobox。

代碼

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

        function load(target, data) {
            if (!$.data(target, "form")) {
                $.data(target, "form", {
                    options: $.extend({},
                    $.fn.form.defaults)
                });
            }
            var options = $.data(target, "form").options;
            if (typeof data == "string") {
                var param = {};
                if (options.onBeforeLoad.call(target, param) == false) {
                    return;
                }
                $.ajax({
                    url: data,
                    data: param,
                    dataType: "json",
                    success: function (data) {
                        _load2(data);
                    },
                    error: function () {
                        options.onLoadError.apply(target, arguments);
                    }
                });
            } else {
                _load2(data);
            }
            function _load2(data) {
                var form = $(target);
                for (var name in data) {
                    var val = data[name];
                    var rr = setChecked(name, val);
                    if (!rr.length) {
                        var f = form.find("input[numberboxName=\"" + name + "\"]");
                        if (f.length) {
                            f.numberbox("setValue", val);
                        } else {
                            $("input[name=\"" + name + "\"]", form).val(val);
                            $("textarea[name=\"" + name + "\"]", form).val(val);
                            $("select[name=\"" + name + "\"]", form).val(val);
                        }
                    }
                    setValue(name, val);
                }
                options.onLoadSuccess.call(target, data);
                _validate(target);
            };
            //設置選中
            function setChecked(name, val) {
                var form = $(target);
                var rr = $("input[name=\"" + name + "\"][type=radio], input[name=\"" + name + "\"][type=checkbox]", form);
                $.fn.prop ? rr.prop("checked", false) : rr.attr("checked", false);
                rr.each(function () {
                    var f = $(this);
                    if (f.val() == String(val)) {
                        $.fn.prop ? f.prop("checked", true) : f.attr("checked", true);
                    }
                });
                return rr;
            };
            //設置值
            function setValue(name, val) {
                var form = $(target);
                var types = ["combotree", "combogrid", "datetimebox", "datebox"];
                var comboboxTypes = ["combobox", "combo"];
                var c = form.find("[comboName=\"" + name + "\"]");
                if (c.length) {
                    for (var i = 0; i < types.length; i++) {
                        var type = types[i];
                        if (c.hasClass(type + "-f")) {
                            if (c[type]("options").multiple) {
                                c[type]("setValues", val);
                            } else {
                                c[type]("setValue", val);
                            }
                            return;
                        }
                    }
                    for (var i = 0; i < comboboxTypes.length; i++) {
                        var comboboxType = comboboxTypes[i];
                        if (c.hasClass(comboboxType + "-f")) {
                            if (c[comboboxType]("options").multiple) {
                                if (val != null) {
                                    var valArray = val.split(",")
                                    c[comboboxType]("setValues", valArray);
                                }

                            } else {
                                c[comboboxType]("setValue", val);
                            }
                            return;
                        }
                    }
                }
            };
        };
    }
});

//表單字段驗證,當所有字段都有效的時候返回true。
function _validate(target) {
    if ($.fn.validatebox) {
        var t = $(target);
        t.find(".validatebox-text:not(:disabled)").validatebox("validate");
        var valid = t.find(".validatebox-invalid");
        valid.filter(":not(:disabled):first").focus();
        return valid.length == 0;
    }
    return true;
};

  

easyui 對form擴展