/** * jQuery ligerUI 1.2.2 * * http://ligerui.com * * Author daomi 2013 [ gd_star@163.com ] * */ (function ($) { $.fn.ligerPopupEdit = function (options) { return $.ligerui.run.call(this, "ligerPopupEdit", arguments); }; $.fn.ligerGetPopupEditManager = function () { return $.ligerui.run.call(this, "ligerGetPopupEditManager", arguments); }; $.ligerDefaults.PopupEdit = { valueFieldID: null, //生成的value input:hidden 字段名 css: null, //附加css onButtonClick: null, //利用这个参数来调用其他函数,比如打开一个新窗口来选择值 nullText: null, //不能为空时的提示 disabled: false, //是否无效 cancelable: true, width: 200, heigth: null, render: null, //显示函数 split: ';', grid: null, //在 可查询、可分页列表的弹出框 中选择值 condition: null, // 条件字段,比如 {fields:[{ name : 'Title' ,op : 'like', vt : 'string',type:'text' }]} valueField: 'id', //值字段 textField: 'text', //显示字段 parms: null, onSelect: null, //选择事件,可阻止 onSelected: null, //选择后事件 valueFieldCssClass : null }; //扩展方法 $.ligerMethos.PopupEdit = $.ligerMethos.PopupEdit || {}; $.ligerui.controls.PopupEdit = function (element, options) { $.ligerui.controls.PopupEdit.base.constructor.call(this, element, options); }; $.ligerui.controls.PopupEdit.ligerExtend($.ligerui.controls.Input, { __getType: function () { return 'PopupEdit'; }, _extendMethods: function () { return $.ligerMethos.PopupEdit; }, _init: function () { $.ligerui.controls.PopupEdit.base._init.call(this); }, _render: function () { var g = this, p = this.options; g.inputText = null; //文本框初始化 if (this.element.tagName.toLowerCase() == "input") { this.element.readOnly = true; g.inputText = $(this.element); g.textFieldID = this.element.id; } if (g.inputText[0].name == undefined) g.inputText[0].name = g.textFieldID; //隐藏域初始化 g.valueField = null; if (p.valueFieldID) { g.valueField = $("#" + p.valueFieldID + ":input"); if (g.valueField.length == 0) g.valueField = $(''); g.valueField[0].id = g.valueField[0].name = p.valueFieldID; } else { g.valueField = $(''); g.valueField[0].id = g.valueField[0].name = g.textFieldID + "_val"; } if (g.valueField[0].name == undefined) g.valueField[0].name = g.valueField[0].id; if (p.valueFieldCssClass) { g.valueField.addClass(p.valueFieldCssClass); } //开关 g.link = $('
'); //外层 g.wrapper = g.inputText.wrap('
').parent(); g.wrapper.append('
'); g.wrapper.append(g.link); g.wrapper.append(g.valueField); g.inputText.addClass("l-text-field");//为什么不会触发mouseon 和 mousedown事件 //开关 事件 g.link.hover(function () { if (p.disabled) return; this.className = "l-trigger-hover"; }, function () { if (p.disabled) return; this.className = "l-trigger"; }).mousedown(function () { if (p.disabled) return; this.className = "l-trigger-pressed"; }).mouseup(function () { if (p.disabled) return; this.className = "l-trigger-hover"; }).click(function () { if(p.showFunction instanceof Function){ p.showFunction(); }else if(p.showFunction=="selectUser"){ selectUser(g.inputText); } if (p.disabled) return; if (g.trigger('buttonClick') == false) return false; }); g.inputText.click(function () { if (p.disabled) return; }).blur(function () { if (p.disabled) return; g.wrapper.removeClass("l-text-focus"); }).focus(function () { if (p.disabled) return; g.wrapper.addClass("l-text-focus"); }); g.wrapper.hover(function () { if (p.disabled) return; g.wrapper.addClass("l-text-over"); }, function () { if (p.disabled) return; g.wrapper.removeClass("l-text-over"); }); g.set(p); }, destroy: function () { if (this.wrapper) this.wrapper.remove(); this.options = null; $.ligerui.remove(this); }, clear: function () { var g = this, p = this.options; g.inputText.val(""); g.valueField.val(""); }, _setCss: function (css) { if (css) { this.wrapper.addClass(css); } }, //取消选择 _setCancelable: function (value) { var g = this, p = this.options; if (!value && g.unselect) { g.unselect.remove(); g.unselect = null; } if (!value && !g.unselect) return; g.unselect = $('
').hide(); g.wrapper.hover(function () { // g.unselect.show(); }, function () { g.unselect.hide(); }) if (!p.disabled && p.cancelable) { g.wrapper.append(g.unselect); } g.unselect.hover(function () { this.className = "l-trigger-hover l-trigger-cancel"; }, function () { this.className = "l-trigger l-trigger-cancel"; }).click(function () { g.clear(); }); }, _setDisabled: function (value) { if (value) { this.wrapper.addClass('l-text-disabled'); } else { this.wrapper.removeClass('l-text-disabled'); } }, _setWidth: function (value) { var g = this; if (value > 20) { g.wrapper.css({ width: value }); g.inputText.css({ width: value - 20 }); } }, _setHeight: function (value) { var g = this; if (value > 10) { g.wrapper.height(value); g.inputText.height(value - 2); } }, _getText: function () { return $(this.inputText).val(); }, _getValue: function () { return $(this.valueField).val(); }, getValue: function () { return this._getValue(); }, getText: function () { return this._getText(); }, //设置值到 隐藏域 setValue: function (value, text) { var g = this, p = this.options; if (arguments.length >= 2) { g.setValue(value); g.setText(text); return; } g.valueField.val(value); }, //设置值到 文本框 setText: function (text) { var g = this, p = this.options; if (p.render) { g.inputText.val(p.render(text)); } else { g.inputText.val(text); } }, addValue: function (value, text) { var g = this, p = this.options; if (!value) return; var v = g.getValue(), t = g.getText(); if (!v) { g.setValue(value); g.setText(text); } else { var arrV = [], arrT = [], old = v.split(p.split), value = value.split(p.split), text = text.split(p.split); for (var i = 0, l = value.length; i < l; i++) { if ($.inArray(value[i], old) == -1) { arrV.push(value[i]); arrT.push(text[i]); } } if (arrV.length) { g.setValue(v + p.split + arrV.join(p.split)); g.setText(t + p.split + arrT.join(p.split)); } } }, removeValue: function (value, text) { var g = this, p = this.options; if (!value) return; var v = g.getValue(), t = g.getText(); if (!v) return; var oldV = v.split(p.split), oldT = t.split(p.split), value = value.split(p.split); for (var i = 0, index = -1, l = value.length; i < l; i++) { if ((index = $.inArray(value[i], oldV)) != -1) { oldV.splice(index, 1); oldT.splice(index, 1); } } g.setValue(oldV.join(p.split)); g.setText(oldT.join(p.split)); }, _setGrid: function (value) { if (!value) return; var g = this, p = this.options; var gridOptions = $.extend({ parms: p.parms }, p.grid); this.bind('buttonClick', function () { if (!g.popupFn) { var options = { grid: gridOptions, condition: p.condition, valueField: p.valueField, textField: p.textField, split: p.split, onSelect: function (e) { if (g.trigger('select', e) == false) return; if (p.grid.checkbox) { g.addValue(e.value, e.text); g.removeValue(e.remvoeValue, e.remvoeText); } else { g.setValue(e.value); g.setText(e.text); } g.trigger('selected', e); }, selectInit: function (rowdata) { var value = g.getValue(); if (!value) return false; if (!p.valueField || !rowdata[p.valueField]) return false; return $.inArray(rowdata[p.valueField].toString(), value.split(p.split)) != -1; } }; g.popupFn = $.ligerui.getPopupFn(options); } g.popupFn(); }); } }); //创建一个可查询、可分页列表的选取弹出框 需要dialog,grid,form等插件的支持 $.ligerui.getPopupFn = function (p) { p = $.extend({ title: '选择数据', //窗口标题 width: 700, //窗口宽度 height: 320, //列表高度 top: null, left: null, split: ';', valueField: null, //接收表格的value字段名 textField: null, //接收表格的text字段名 grid: null, //表格的参数 同ligerGrid condition: null, //搜索表单的参数 同ligerForm onSelect: function (p) { }, //选取函数 selectInit: function (rowdata) { return false } //选择初始化 }, p); if (!p.grid) return; var win, grid, condition, lastSelected = []; return function () { show(); return false; }; function show() { function getGridHeight(height) { height = height || p.height; height -= conditionPanel.height(); return height; } if (win) { grid._showData(); win.show(); grid.refreshSize(); lastSelected = grid.selected.concat(); return; } var panle = $("
"); var conditionPanel = $("
"); var gridPanel = $("
"); panle.append(conditionPanel).append(gridPanel); if (p.condition) { var conditionParm = $.extend({ labelWidth: 60, space: 20 }, p.condition); condition = conditionPanel.ligerForm(conditionParm); } else { conditionPanel.remove(); } var gridParm = $.extend({ columnWidth: 120, alternatingRow: false, frozen: true, rownumbers: true }, p.grid, { width: "100%", height: getGridHeight(), isChecked: p.selectInit, isSelected: p.selectInit, inWindow: false }); //grid grid = gridPanel.ligerGrid(gridParm); //搜索按钮 if (p.condition) { var containerBtn1 = $('
  • '); $("ul:first", conditionPanel).append(containerBtn1).after('
    '); $("div", containerBtn1).ligerButton({ text: '搜索', click: function () { var rules = $.ligerui.getConditions(conditionPanel); grid.setParm('condition', $.ligerui.toJSON(rules)); grid.reload(); } }); } //dialog win = $.ligerDialog.open({ title: p.title, width: p.width, height: 'auto', top: p.top, left: p.left, target: panle, isResize: true, cls: 'l-selectorwin', onContentHeightChange: function (height) { grid.set('height', getGridHeight(height)); return false; }, onStopResize: function () { grid.refreshSize(); }, buttons: [ { text: '选择', onclick: function (item, dialog) { toSelect(); dialog.hide(); } }, { text: '取消', onclick: function (item, dialog) { dialog.hide(); } } ] }); grid.refreshSize(); } function toSelect() { var selected = grid.selected || []; var value = [], text = [], data = []; $(selected).each(function (i, rowdata) { p.valueField && value.push(rowdata[p.valueField]); p.textField && text.push(rowdata[p.textField]); var o = $.extend(true, {}, this); grid.formatRecord(o, true); data.push(o); }); var unSelected = []; $(lastSelected).each(function () { if ($.inArray(this, selected) == -1 && $.inArray(this, grid.rows) != -1) { unSelected.push(this); } }); var removeValue = [], removeText = [], removeData = []; $(unSelected).each(function (i, rowdata) { p.valueField && removeValue.push(rowdata[p.valueField]); p.textField && removeText.push(rowdata[p.textField]); var o = $.extend(true, {}, this); grid.formatRecord(o, true); removeData.push(o); }); p.onSelect({ value: value.join(p.split), text: text.join(p.split), data: data, remvoeValue: removeValue.join(p.split), remvoeText: removeText.join(p.split), removeData: removeData }); } }; })(jQuery);