/** * jQuery EasyUI 1.3.6 * * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. * * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt * To use it on other terms please contact us at info@jeasyui.com * */ (function ($) { function _1(_2, _3) { var _4 = $.data(_2, "combo"); var _5 = _4.options; var _6 = _4.combo; var _7 = _4.panel; if (_3) { _5.width = _3; } if (isNaN(_5.width)) { var c = $(_2).clone(); c.css("visibility", "hidden"); c.appendTo("body"); _5.width = c.outerWidth(); c.remove(); } _6.appendTo("body"); var _8 = _6.find("input.combo-text"); var _9 = _6.find(".combo-arrow"); var _a = _5.hasDownArrow ? _9._outerWidth() : 0; _6._outerWidth(_5.width)._outerHeight(_5.height); _8._outerWidth(_6.width() - _a); _8.css({ height: _6.height() + "px", lineHeight: _6.height() + "px" }); _9._outerHeight(_6.height()); _7.panel("resize", { width: (_5.panelWidth ? _5.panelWidth : _6.outerWidth()), height: _5.panelHeight }); _6.insertAfter(_2); }; function _b(_c) { $(_c).addClass("combo-f").hide(); var _d = $("" + "" + "" + "" + "").insertAfter(_c); var _e = $("
").appendTo("body"); _e.panel({ doSize: false, closed: true, cls: "combo-p", style: { position: "absolute", zIndex: 10 }, onOpen: function () { var p = $(this).panel("panel"); if ($.fn.menu) { p.css("z-index", $.fn.menu.defaults.zIndex++); } else { if ($.fn.window) { p.css("z-index", $.fn.window.defaults.zIndex++); } } $(this).panel("resize"); }, onBeforeClose: function () { _1c(this); }, onClose: function () { var _f = $.data(_c, "combo"); if (_f) { _f.options.onHidePanel.call(_c); } } }); var _10 = $(_c).attr("name"); if (_10) { _d.find("input.combo-value").attr("name", _10); $(_c).removeAttr("name").attr("comboName", _10); } return { combo: _d, panel: _e }; }; function _11(_12) { var _13 = $.data(_12, "combo"); var _14 = _13.options; var _15 = _13.combo; if (_14.hasDownArrow) { _15.find(".combo-arrow").show(); } else { _15.find(".combo-arrow").hide(); } _16(_12, _14.disabled); _17(_12, _14.readonly); }; function _18(_19) { var _1a = $.data(_19, "combo"); var _1b = _1a.combo.find("input.combo-text"); _1b.validatebox("destroy"); _1a.panel.panel("destroy"); _1a.combo.remove(); $(_19).remove(); }; function _1c(_1d) { $(_1d).find(".combo-f").each(function () { var p = $(this).combo("panel"); if (p.is(":visible")) { p.panel("close"); } }); }; function _1e(_1f) { var _20 = $.data(_1f, "combo"); var _21 = _20.options; var _22 = _20.panel; var _23 = _20.combo; var _24 = _23.find(".combo-text"); var _25 = _23.find(".combo-arrow"); $(document).unbind(".combo").bind("mousedown.combo", function (e) { var p = $(e.target).closest("span.combo,div.combo-p"); if (p.length) { _1c(p); return; } $("body>div.combo-p>div.combo-panel:visible").panel("close"); }); _24.unbind(".combo"); _25.unbind(".combo"); if (!_21.disabled && !_21.readonly) { _24.bind("click.combo", function (e) { if (!_21.editable) { _26.call(this); } else { var p = $(this).closest("div.combo-panel"); $("div.combo-panel:visible").not(_22).not(p).panel("close"); } }).bind("keydown.combo paste.combo drop.combo", function (e) { switch (e.keyCode) { case 38: _21.keyHandler.up.call(_1f, e); break; case 40: _21.keyHandler.down.call(_1f, e); break; case 37: _21.keyHandler.left.call(_1f, e); break; case 39: _21.keyHandler.right.call(_1f, e); break; case 13: e.preventDefault(); _21.keyHandler.enter.call(_1f, e); return false; case 9: case 27: _27(_1f); break; default: if (_21.editable) { if (_20.timer) { clearTimeout(_20.timer); } _20.timer = setTimeout(function () { var q = _24.val(); if (_20.previousValue != q) { _20.previousValue = q; $(_1f).combo("showPanel"); _21.keyHandler.query.call(_1f, _24.val(), e); $(_1f).combo("validate"); } }, _21.delay); } } }); _25.bind("click.combo", function () { _26.call(this); }).bind("mouseenter.combo", function () { $(this).addClass("combo-arrow-hover"); }).bind("mouseleave.combo", function () { $(this).removeClass("combo-arrow-hover"); }); } function _26() { if (_22.is(":visible")) { _27(_1f); } else { var p = $(this).closest("div.combo-panel"); $("div.combo-panel:visible").not(_22).not(p).panel("close"); $(_1f).combo("showPanel"); } _24.focus(); }; }; function _28(_29) { var _2a = $.data(_29, "combo"); var _2b = _2a.options; var _2c = _2a.combo; var _2d = _2a.panel; _2d.panel("move", { left: _2e(), top: _2f() }); if (_2d.panel("options").closed) { _2d.panel("open"); _2b.onShowPanel.call(_29); } (function () { if (_2d.is(":visible")) { _2d.panel("move", { left: _2e(), top: _2f() }); setTimeout(arguments.callee, 200); } })(); function _2e() { var _30 = _2c.offset().left; if (_2b.panelAlign == "right") { _30 += _2c._outerWidth() - _2d._outerWidth(); } if (_30 + _2d._outerWidth() > $(window)._outerWidth() + $(document).scrollLeft()) { _30 = $(window)._outerWidth() + $(document).scrollLeft() - _2d._outerWidth(); } if (_30 < 0) { _30 = 0; } return _30; }; function _2f() { var top = _2c.offset().top + _2c._outerHeight(); if (top + _2d._outerHeight() > $(window)._outerHeight() + $(document).scrollTop()) { top = _2c.offset().top - _2d._outerHeight(); } if (top < $(document).scrollTop()) { top = _2c.offset().top + _2c._outerHeight(); } return top; }; }; function _27(_31) { var _32 = $.data(_31, "combo").panel; _32.panel("close"); }; function _33(_34) { var _35 = $.data(_34, "combo").options; var _36 = $(_34).combo("textbox"); _36.validatebox($.extend({}, _35, { deltaX: (_35.hasDownArrow ? _35.deltaX : (_35.deltaX > 0 ? 1 : -1)) })); }; function _16(_37, _38) { var _39 = $.data(_37, "combo"); var _3a = _39.options; var _3b = _39.combo; if (_38) { _3a.disabled = true; $(_37).attr("disabled", true); _3b.find(".combo-value").attr("disabled", true); _3b.find(".combo-text").attr("disabled", true); } else { _3a.disabled = false; $(_37).removeAttr("disabled"); _3b.find(".combo-value").removeAttr("disabled"); _3b.find(".combo-text").removeAttr("disabled"); } }; function _17(_3c, _3d) { var _3e = $.data(_3c, "combo"); var _3f = _3e.options; _3f.readonly = _3d == undefined ? true : _3d; var _40 = _3f.readonly ? true : (!_3f.editable); _3e.combo.find(".combo-text").attr("readonly", _40).css("cursor", _40 ? "pointer" : ""); }; function _41(target) { var state = $.data(target, "combo"); var opts = state.options; var combo = state.combo; if (opts.multiple) { combo.find("input.combo-value").remove(); } else { combo.find("input.combo-value").val(""); } combo.find("input.combo-text").val(""); }; function _46(_47) { var _48 = $.data(_47, "combo").combo; return _48.find("input.combo-text").val(); }; function _49(_4a, _4b) { var _4c = $.data(_4a, "combo"); var _4d = _4c.combo.find("input.combo-text"); if (_4d.val() != _4b) { _4d.val(_4b); $(_4a).combo("validate"); _4c.previousValue = _4b; } }; function _4e(_4f) { var _50 = []; var _51 = $.data(_4f, "combo").combo; _51.find("input.combo-value").each(function () { _50.push($(this).val()); }); return _50; }; function _52(target, values) { var opts = $.data(target, "combo").options; var oldVals = _4e(target); var combo = $.data(target, "combo").combo; combo.find("input.combo-value").remove(); var comboName = $(target).attr("comboName"); for (var i = 0; i < values.length; i++) { var comboValue = $("").appendTo(combo); if (comboName) { comboValue.attr("name", comboName); } comboValue.val(values[i]); } var tmp = []; for (var i = 0; i < oldVals.length; i++) { tmp[i] = oldVals[i]; } var aa = []; for (var i = 0; i < values.length; i++) { for (var j = 0; j < tmp.length; j++) { if (values[i] == tmp[j]) { aa.push(values[i]); tmp.splice(j, 1); break; } } } if (aa.length != values.length || values.length != oldVals.length) { if (opts.multiple) { opts.onChange.call(target, values, oldVals); } else { opts.onChange.call(target, values[0], oldVals[0]); } } }; function _5a(_5b) { var _5c = _4e(_5b); return _5c[0]; }; function _5d(_5e, _5f) { _52(_5e, [_5f]); }; function _60(_61) { var _62 = $.data(_61, "combo").options; var fn = _62.onChange; _62.onChange = function () { }; if (_62.multiple) { if (_62.value) { if (typeof _62.value == "object") { _52(_61, _62.value); } else { _5d(_61, _62.value); } } else { _52(_61, []); } _62.originalValue = _4e(_61); } else { _5d(_61, _62.value); _62.originalValue = _62.value; } _62.onChange = fn; }; $.fn.combo = function (_63, _64) { if (typeof _63 == "string") { var _65 = $.fn.combo.methods[_63]; if (_65) { return _65(this, _64); } else { return this.each(function () { var _66 = $(this).combo("textbox"); _66.validatebox(_63, _64); }); } } _63 = _63 || {}; return this.each(function () { var _67 = $.data(this, "combo"); if (_67) { $.extend(_67.options, _63); } else { var r = _b(this); _67 = $.data(this, "combo", { options: $.extend({}, $.fn.combo.defaults, $.fn.combo.parseOptions(this), _63), combo: r.combo, panel: r.panel, previousValue: null }); $(this).removeAttr("disabled"); } _11(this); _1(this); _1e(this); _33(this); _60(this); }); }; $.fn.combo.methods = { options: function (jq) { return $.data(jq[0], "combo").options; }, panel: function (jq) { return $.data(jq[0], "combo").panel; }, textbox: function (jq) { return $.data(jq[0], "combo").combo.find("input.combo-text"); }, destroy: function (jq) { return jq.each(function () { _18(this); }); }, resize: function (jq, _68) { return jq.each(function () { _1(this, _68); }); }, showPanel: function (jq) { return jq.each(function () { _28(this); }); }, hidePanel: function (jq) { return jq.each(function () { _27(this); }); }, disable: function (jq) { return jq.each(function () { _16(this, true); _1e(this); }); }, enable: function (jq) { return jq.each(function () { _16(this, false); _1e(this); }); }, readonly: function (jq, _69) { return jq.each(function () { _17(this, _69); _1e(this); }); }, isValid: function (jq) { var _6a = $.data(jq[0], "combo").combo.find("input.combo-text"); return _6a.validatebox("isValid"); }, clear: function (jq) { return jq.each(function () { _41(this); }); }, reset: function (jq) { return jq.each(function () { var _6b = $.data(this, "combo").options; if (_6b.multiple) { $(this).combo("setValues", _6b.originalValue); } else { $(this).combo("setValue", _6b.originalValue); } }); }, getText: function (jq) { return _46(jq[0]); }, setText: function (jq, _6c) { return jq.each(function () { _49(this, _6c); }); }, getValues: function (jq) { return _4e(jq[0]); }, setValues: function (jq, _6d) { return jq.each(function () { _52(this, _6d); }); }, getValue: function (jq) { return _5a(jq[0]); }, setValue: function (jq, _6e) { return jq.each(function () { _5d(this, _6e); }); } }; $.fn.combo.parseOptions = function (_6f) { var t = $(_6f); return $.extend({}, $.fn.validatebox.parseOptions(_6f), $.parser.parseOptions(_6f, ["width", "height", "separator", "panelAlign", { panelWidth: "number", editable: "boolean", hasDownArrow: "boolean", delay: "number", selectOnNavigation: "boolean" }]), { panelHeight: (t.attr("panelHeight") == "auto" ? "auto" : parseInt(t.attr("panelHeight")) || undefined), multiple: (t.attr("multiple") ? true : undefined), disabled: (t.attr("disabled") ? true : undefined), readonly: (t.attr("readonly") ? true : undefined), value: (t.val() || undefined) }); }; $.fn.combo.defaults = $.extend({}, $.fn.validatebox.defaults, { width: "auto", height: 22, panelWidth: null, panelHeight: 200, panelAlign: "left", multiple: false, selectOnNavigation: true, separator: ",", editable: true, disabled: false, readonly: false, hasDownArrow: true, value: "", delay: 200, deltaX: 19, keyHandler: { up: function (e) { }, down: function (e) { }, left: function (e) { }, right: function (e) { }, enter: function (e) { }, query: function (q, e) { } }, onShowPanel: function () { }, onHidePanel: function () { }, onChange: function (_70, _71) { } }); })(jQuery);