功能描述
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;
};