easyui 對form擴展
阿新 • • 發佈:2018-06-12
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擴展