(function ($) { /** * 按钮控件 * * @example * var btn = new FR.Button({ * renderEl : $('body'), * text : "Button", * hotKeys : "enter", * iconCls : "custom-btn-blue", * iconAlign : "right", * scale : "medium", * handler : function(){alert("click me")} * }); * @class FR.Button * @extends FR.Widget * * @cfg {JSON} options 属性配置 * @cfg {String} options.text 按钮上的文字 * @cfg {String} [options.hotKeys] 触发按钮的快捷键 * @cfg {String} [options.iconCls] 按钮的css样式表类 * @cfg {"right"|"left"|"top"|"bottom"} [options.iconAlign="right"] 按钮图标的对齐方式 * @cfg {"small"|"medium"|"large"} [options.scale="medium"] 按钮的尺寸 * @cfg {Function} options.handler 点击按钮时触发的事件 */ FR.Button = FR.extend(FR.Widget, /**@class FR.Button*/{ /** * 初始的配置属性 * @returns {*} * @private */ _defaultConfig: function () { return $.extend(FR.Button.superclass._defaultConfig.apply(), { baseCls: "fr-btn", hotkeys: "", icon: "", // 按钮根据文字图标的变化自动变化 autoSize: false, scale: "small", iconAlign: "left", text: "", width: "auto", height: "auto", borderWidth: 6 }); }, /** * 初始化按钮 * @private */ _init: function () { FR.Button.superclass._init.apply(this, arguments); var o = this.options; this.initTable(o); this.addEvents(o); var self = this; if (o.hotkeys) { FR.Keys.reg(function (e) { if (($(document).codeToString(e) == o.hotkeys) && self.isEnabled()) { var bht = FR.CookieInfor.getCookieByName("buttonHotKeyTimer"); var nt = (new Date()).getTime(); if (FR.isEmpty(bht) || (nt - bht > 1000)) { if (self.isEnabled()) { self.fireEvent(FR.Events.CLICK, e); document.cookie = "buttonHotKeyTimer=" + nt; e.preventDefault(); e.stopPropagation(); } } } }); } // alex:用添加事件的机制来实现handler的添加 if ($.isFunction(o.handler)) { this.on(FR.Events.CLICK, o.handler.createDelegate(o.scope || this)); } }, initTable:function(o){ if (!o.text && o.value) { o.text = o.value; } var id = o.baseCls + "-" + o.widgetName; var cls = (o.icon) ? (o.text ? ' fr-btn-text-icon' : ' fr-btn-icon') : ' fr-btn-noicon'; var scaleCls = 'fr-btn-' + o.scale + ' fr-btn-icon-' + o.scale + '-' + o.iconAlign; this.$btn= $('<button/>') .attr('unselectable','none') .attr('type','button') .attr('data-role','none') .addClass('fr-btn-text') .append(o.text); this.$em= $('<em/>').attr('unselectable','on').append(this.$btn) this.$btnWrap=$('<div/>').addClass(scaleCls).append(this.$em); FR.Button.setIcon(this.$btn ,o.icon); this.$btndiv = $('<div/>') .attr('id',id) .addClass('fr-btn-up') .addClass(cls) .append(this.$btnWrap).appendTo(this.element); var btnTextHeight= o.scale=='small'? 14 : o.scale=='middle'? 24 : 32; if(FR.Browser.isIE8Before()){ this.$btn.css('margin-top',(o.height - btnTextHeight)/2); }else{ this.$btndiv.css('display' , 'table-cell'); } this.$btndiv.height(Number(o.height) + 1);//改成新样式会出现间隙 this.$btndiv.width(o.width); }, addEvents: function (o) { if (!this.$btndiv) { return; } var self = this; var M = { onMouseOver: function () { if (self.isEnabled()) { self.$btndiv.addClass(o.baseCls + "-over"); } }, onMouseOut: function () { if (self.isEnabled()) { self.$btndiv.removeClass(o.baseCls + "-over"); } }, onMouseDown: function () { if (self.isEnabled()) { self.$btndiv.removeClass(o.baseCls + "-over"); $(document).bind("mouseup", M.onMouseUp); } }, onMouseUp: function () { if (self.isEnabled()) { self.$btndiv.removeClass(o.baseCls + "-over"); $(document).unbind("mouseup", M.onMouseUp); } } } this.$btndiv.mouseover(M.onMouseOver.createInterceptor(this.isEnabled(), this)) .mouseout(M.onMouseOut) .mousedown(M.onMouseDown.createInterceptor(this.isEnabled(), this)) .mouseup(M.onMouseUp); this.$btndiv.keydown(function (e) { if (e.keyCode === 13) { e.stopPropagation(); } }); this.$btndiv.click(function (e) { if (self.isEnabled()) { self.fireEvent(FR.Events.CLICK, e); } }); }, setEnable: function (enabled) { FR.Button.superclass.setEnable.apply(this, arguments); var clz = this.options.baseCls; if (this.$btndiv && enabled === false) { this.$btndiv.removeClass(clz + "-over"); } }, getText: function () { return this.$btn.text(); }, setText: function (text) { if (FR.isEmpty(text)) { return; } this.$btn.text(text); }, getValue: function () { return this.$btn.text(); }, setValue: function (text) { if (FR.isEmpty(text)) { return; } this.$btn.text(text); }, /** * 设置按钮的图标 * @param {String} icon 图标,可以是一个url,也可以是形如"css:fr-custom-button-icon"这样的css样式表类 */ setIcon: function (icon) { if (FR.isEmpty(icon)) { return; } // 移除所有的class this.$btn.removeClass(); this.$btn.addClass("fr-btn-text"); var iconButton = this.$btn; // b:ie6 filter image 会导致宽度定死 if (FR.Browser.isIE6()) { $('<span>' + this.$btn.text() + '</span>').appendTo(this.$btn.parent()); } // alex:如果是以css:打头,表示里面保存的是一个cls if (icon.substring(0, 4) == "css:") { iconButton.addClass(icon.substring(4)); // carl:使用css图片截取,服务器直接生成css语句,当为style:开头时,保存的为css属性 } else if (icon.substring(0, 6) == "style:") { iconButton.css({ background: icon.substring(6) }); // 否则保存的就是一个url路径 } else { iconButton.css({ "background-image": "url(" + icon + ")" }); } }, /** * 设置按钮的最大宽度 * @param {Number} width 按钮的最大宽度 */ setMaxWidth: function (width) { if (!isNaN(width)) { var o = this.options; if (FR.Browser.isIE()) { if (FR.fixBoxModelWidth(this.$btn) + this.$btn.width() > (width - o.borderWidth)) { this.$btn.width(width - o.borderWidth); } } else { this.$btn.css("max-width", (width - o.borderWidth) + "px"); } } }, doResize: function (give) { FR.Button.superclass.doResize.call(this, give); var width = give ? give.width : this.options.width; var height = give ? give.height : this.options.height; this.$btndiv.css({ width: width, height: height }); this.setMaxWidth(width); } }) $.shortcut("button", FR.Button); FR.Button.setIcon = function ($btn, icon) { if (FR.isEmpty(icon)) { return; } // 移除所有的class $btn.removeClass(); $btn.addClass("fr-btn-text"); var iconButton = $btn; // b:ie6 filter image 会导致宽度定死 if (FR.Browser.isIE6()) { // 上面这个不加flow填报页面就显示不出图片 加了flow就解决不了超过btn宽度会换行的问题... $('<span>' + $btn.text() + '</span>').appendTo($btn.parent()); } // alex:如果是以css:打头,表示里面保存的是一个cls if (icon.substring(0, 4) == "css:") { iconButton.addClass(icon.substring(4)); // carl:使用css图片截取,服务器直接生成css语句,当为style:开头时,保存的为css属性 } else if (icon.substring(0, 6) == "style:") { iconButton.css({ background: icon.substring(6) }); // 否则保存的就是一个url路径 } else { iconButton.css({ "background-image": "url(" + icon + ")" }); } }; FR.Button.setMaxWidth = function ($btn, config) { if ($btn.isSetWidth) { return; } if (!isNaN(config.width)) { if (FR.Browser.isIE()) { var btnWidth = FR.fixBoxModelWidth($btn) + $btn.width(); if (btnWidth > (config.width - config.borderWidth)) { $btn.width(config.width - config.borderWidth); FR.Button.setPrototypeBtnWidth(config, config.width - config.borderWidth); } } else { $btn.css("max-width", (config.width - config.borderWidth) + "px"); FR.Button.setPrototypeBtnMaxWidth(config, config.width - config.borderWidth); } } }; FR.Button.setPrototypeBtnWidth = function (config, width) { var $table = FR.Button.CacheTable._getPrototypeTable(config); if($table){ var $btn = $table.$btn; $btn.width(width); $btn.isSetWidth = true; } }; FR.Button.setPrototypeBtnMaxWidth = function (config, width) { var $table = FR.Button.CacheTable._getPrototypeTable(config); if($table){ var $btn = $table.$btn; $btn.css("max-width", (config.width - config.borderWidth) + "px"); $btn.isSetWidth = true; } }; /** * 图标按钮 * * @example * var btn = new FR.IconButton({ * renderEl : 'body', * imgsrc : "http://www.baidu.com/img/bdlogo.gif" * }); * @class FR.IconButton * @extends FR.Widget * @cfg {String} imgSrc 用于生成按钮的图片的地址 */ FR.IconButton = FR.extend(FR.Widget, /**@class FR.IconButton*/{ _defaultConfig: function () { return $.extend(FR.IconButton.superclass._defaultConfig.apply(), { tablable: true, render: false, width: 18, height: 18, baseClass: "fr-icon-btn" }); }, _init: function () { FR.IconButton.superclass._init.apply(this, arguments); var o = this.options; // 当render为false时,其本身就是一个控件,不需要加进去 if (o.render === true) { this.$btn = $("<div/>").appendTo(this.element); } else { this.$btn = this.element; } this.$btn.addClass(o.baseClass); if (o.title) { this.$btn.attr("title", o.title); } if(o.text){ this.$btn.html(o.text); } var baseClsForMouse = o.baseClass; if (o.imgsrc) { baseClsForMouse = o.imgsrc; this.$btn.addClass(o.imgsrc); } // mouse event var self = this; var M = { onMouseOver: function (e) { if (self.isEnabled()) { self.$btn.addClass(baseClsForMouse + "-hover"); } }, onMouseDown: function (e) { if (self.isEnabled()) { self.$btn.removeClass(baseClsForMouse + "-hover"); self.$btn.addClass(baseClsForMouse + "-click"); $(document).bind("mouseup", M.onMouseUp); } }, onMouseOut: function (e) { self.$btn.removeClass(baseClsForMouse + "-hover"); self.$btn.removeClass(baseClsForMouse + "-click"); }, onMouseUp: function (e) { self.$btn.removeClass(baseClsForMouse + "-click"); $(document).unbind("mouseup", M.onMouseUp); } } this.$btn.mouseover(M.onMouseOver).mouseout(M.onMouseOut) .mousedown(M.onMouseDown).mouseup(M.onMouseUp); this.$btn.click(function (e) { if (self.isEnabled()) { self.fireEvent(FR.Events.CLICK, e); } }); // alex:用添加事件的机制来实现handler的添加 if ($.isFunction(o.handler)) { this.on(FR.Events.CLICK, o.handler.createDelegate(o.scope || this)); } }, destroy: function () { this.element.empty(); }, doResize: function (give) { FR.Button.superclass.doResize.call(this, give); this.$btn.css({ width: give.width, height: give.height }); } }); $.shortcut("iconbutton", FR.IconButton); /** * 自定义按钮,分别使用不同的图片表示按钮的各种状态 * * @example * var btn = new FR.FreeButton({ * renderEl : 'body', * width : 200, * height : 100, * icon : { * background : "" * } * }); * * @class FR.FreeButton * @extends FR.BaseEditor * @cfg {Number} fontsize 字体大小 * @cfg {String} fontfamily 字体类型 * @cfg {Number} fontweight 字体的粗细 * @cfg {String} fontstyle 字体的样式 * @cfg {String} color 文字颜色 * @cfg {String} decoration 文字的修饰 * @cfg {String} hotkeys 快捷键 */ FR.FreeButton = FR.extend(FR.BaseEditor, /**@class FR.FreeButton*/{ _defaultConfig: function () { return $.extend(FR.FreeButton.superclass._defaultConfig.apply(), { width: 200, height: 100, initial: { background: '' } }); }, _init: function () { FR.FreeButton.superclass._init.apply(this, arguments); this.switchOn = false; var o = this.options; if (o.render === true) { /** * @property {jQuery} $img 用于显示按钮图标的dom元素 */ this.$img = $("<div style='text-align: center;'/>") .appendTo(this.element); } else { this.$img = this.element.css('text-align', 'center'); } this.element.addClass('fr-form-imgboard'); if (o.icon) { var icon = $("<img style='vertical-align: middle;margin-right: 3px;'/>"); if (o.icon.background) { var array = o.icon.background.split('('); var src = array[1]; array = src.split(')'); src = array[0]; icon.attr('src', src).appendTo(this.$img); } } /** * @property {jQuery} text 用于显示按钮文字的dom元素 */ this.text = $("<span style='text-align: center;'>" + ((o.text != null && !FR.isEmpty($.trim(o.text))) ? o.text : " ") + "</span>").appendTo(this.$img) if (o.fontsize) { this.text.css('font-size', o.fontsize); } if (o.color) { this.text.css('color', o.color); } if (o.decoration) { this.text.css('text-decoration', o.decoration); } if (o.fontfamily) { this.text.css('font-family', o.fontfamily); } if (o.fontweight) { this.text.css('font-weight', o.fontweight); } if (o.fontstyle) { this.text.css('font-style', o.fontstyle); } if (o.text && !FR.isEmpty($.trim(o.text))) { this.setValue(o.text); } if (o.width && o.height) { this.doResize(o); } if (o.hotkeys) { FR.Keys.reg(function (e) { if (($(document).codeToString(e) == o.hotkeys) && self.isEnabled()) { // shoc:阻止添加删除行按钮这种一次触发很多行的 var bht = FR.CookieInfor.getCookieByName("buttonHotKeyTimer"); var nt = (new Date()).getTime(); if (FR.isEmpty(bht) || (nt - bht > 1000)) { if (self.isEnabled()) { self.fireEvent(FR.Events.CLICK, e); document.cookie = "buttonHotKeyTimer=" + nt; e.preventDefault(); e.stopPropagation(); } } } }); } // wikky:暂时先这样处理 // 低版本IE的background使用url的方式,现有逻辑下,如果不勾选“点击查询前不显示报表内容”,会触发保存附件的attachmentMap的清空操作,使得hover和click获取不到图片 // 现有逻辑有个问题,当触发parameterCommit时,会清空attachmentMap,而loadContentPane时只会重新put页面的image,而不会处理参数界面的image; // 这个逻辑改起来比较麻烦,暂时用这种方式处理。 if (FR.Browser.isIE8Before()) { if (o.click && o.click.background) { this.setBackground(o.click.background); } if (o.over && o.over.background) { this.setBackground(o.over.background); } } this.setBackground(o.initial.background); // mouse event var self = this; // 不可用事件中就不做处理 var M = { onMouseOver: function (e) { if (!self.options.disabled) { self.fireOver(); } }, onMouseOut: function (e) { if (!self.options.disabled) { self.fireOut(); } }, onMouseDown: function (e) { if (!self.options.disabled) { self.fireDown(); } $(document).bind("mouseup", M.onMouseUp); }, onMouseUp: function (e) { if (!self.options.disabled) { self.fireUp(); } $(document).unbind("mouseup", M.onMouseUp); } } this.$img.mouseover(M.onMouseOver.createInterceptor(this.isEnabled(), this)).mouseout(M.onMouseOut).mousedown(M.onMouseDown .createInterceptor(this.isEnabled(), this)) .mouseup(M.onMouseUp); if (this._getEvents().click) { this.$img.addClass("fr-widget-click"); } else { this.$img.css('cursor', 'default'); } this.$img.click(function (e) { if (self.isEnabled()) { self.fireEvent(FR.Events.CLICK, e); } }); if ($.isFunction(o.handler)) { this.on(FR.Events.CLICK, o.handler.createDelegate(o.scope || this)); } }, setValue: function (value) { this.text.text(value); }, getValue: function () { return this.text.text(); }, setEnable: function (arg) { if (arg === true) { this.options.disabled = false; if (this.options.isToggle && this.switchOn) { if (this.options.click) { this.element.css('background', this.options.click.background); } } else { this.element.css('background', this.options.initial.background); } this.element.addClass('ui-state-enabled'); this.element.removeClass('ui-state-disabled'); } else if (arg === false) { this.options.disabled = true; this.element.css('background', 'none'); this.element.addClass('ui-state-disabled'); this.element.removeClass('ui-state-enabled'); } }, /** * 鼠标悬浮事件 */ fireOver: function () { if (this.options.over) { this.setBackground(this.options.over.background); } }, /** * 鼠标离开事件 */ fireOut: function () { if (this.options.isToggle && this.switchOn) { if (this.options.click) { this.setBackground(this.options.click.background); } } else { this.setBackground(this.options.initial.background); } }, /** * 鼠标按下事件 */ fireDown: function () { if (this.options.isToggle && !this.switchOn) { var widgetList = this.getWidgetsInSameGroup(); if (widgetList) { for (var i = 0; i < widgetList.length; i++) { var widget = widgetList[i]; if (widget != this) { widget.switchDown(); } } } this.switchOn = true; } if (this.options.click) { this.setBackground(this.options.click.background); } }, /** * 鼠标松开事件 */ fireUp : function() { if (this.options.over && this.switchOn) { this.setBackground(this.options.over.background); } else { this.setBackground(this.options.initial.background); } }, /** * 开关事件 */ switchDown: function () { if (this.options.isToggle) { this.setBackground(this.options.initial.background); this.switchOn = false; } }, getWidgetsInSameGroup: function () { if (this.options.group) { return this.options.form.getWidgetsByGroup(this.options.group); } }, /** * 设置按钮的背景图片 * @param {String} img 背景图地址和位置属性 */ setBackground: function (img) { this.$img.css('background', img); }, doResize: function (give) { this.$img.css({ width: give.width, height: give.height }); this.text.css('line-height', give.height + 'px'); } }); $.shortcut('freebutton', FR.FreeButton); /** * 具有两个选中状态的按钮,这是一个抽象类,使用的时候需要用其具体的子类 * @class FR.ToggleButton * @extends FR.BaseEditor * @abstract * @cfg {Boolean} selected 初始是否处于选中状态 * @cfg {Function} handler 控件点击时触发的事件 * @cfg {Number} fontSize 控件上显示的文字字体大小 */ FR.ToggleButton = FR.extend(FR.BaseEditor, /**@class FR.ToggleButton*/{ /** * @property {String} selected_class 表示该按钮处于选中状态 */ selected_class: 'fr-checkbox-checkon' , /** * @property {String} unselected_class 表示该按钮处于另一种选中状态 */ unselected_class: 'fr-checkbox-checkoff', _defaultConfig: function () { return $.extend(FR.ToggleButton.superclass._defaultConfig.apply(), { selected: false, scope: this, render: true, only_be_selected: false }); }, _init: function () { FR.ToggleButton.superclass._init.apply(this, arguments); var o = this.options; if (o.render === true) { /* * alex:原来这里是$("<div>"),发现在ie中图标处点下去却没有触发click事件,改成span就可以了 另外$("<span>").text(o.text)在ie中是不能生成span的 */ // b:只有背景时ie中忽略图片高度 this.element.css('height','auto').css('width','auto'); this.$btn = $("<span>" + ((o.text != null && !FR.isEmpty($.trim(o.text))) ? o.text : " ") + "</span>").appendTo(this.element).addClass('x-text') .addClass("fr-widget-click").click(function (e) { this.onNodeClick(); }.createDelegate(this)); } else { this.$btn = this.element; if (o.text != null) { $("<span>" + o.text + "</span>").insertAfter(this.$btn); } } // b:chrome位置不够显示pic if (FR.Browser.r.chrome) { this.$btn.css('padding-top', 1); } if (this.options.fontSize) { //IE10下11还是会有部分遮挡 var minSize = 12; if (this.options.fontSize < minSize) { this.options.fontSize = minSize; } this.$btn.css('font-size', this.options.fontSize); } this.$btn.css("display", "inline-block"); if ($.isFunction(o.handler)) { this.$btn.click(o.handler.createDelegate(o.scope || this) .createInterceptor(this.isEnabled, this)); } this.changeBoxState(o.selected); // b:先重构,具体干嘛的不清楚,感觉么必要,以后再看 this.$formbtn = this.initFormBtn(); if (o.value) { if (!this.isValidate(o.value)) { FR.Msg.toast(this.errorMsg); return; } if (typeof o.value == 'boolean') { this.setSelectedWithoutEvent(o.value); } else if (o.value == 'true') { this.setSelectedWithoutEvent(true); } else if (o.value == 'false') { this.setSelectedWithoutEvent(false); } } }, onNodeClick: function () { var o = this.options; if (this.isEnabled()) { if (o.only_be_selected && this.selected()) { return false; } else if (!this.selected(!this.selected())) { return false; } // marro: 联动 this.fireEvent(FR.Events.AFTEREDIT); this.fireEvent(FR.Events.CLICK); } }, changeBoxState: function (selected) { selected = typeof selected == 'boolean' ? selected : (selected != 'false'); this.$btn[selected ? 'addClass' : 'removeClass'](this.selected_class); this.$btn[selected ? 'removeClass' : 'addClass'](this.unselected_class); }, initFormBtn: function () { return null; }, getValue: function () { return this.selected(); }, _dealValueWithEvents: function (state) { if (typeof state == 'boolean') { this.selected(state, "noFireEvent"); } else if (state == 'true') { this.selected(true, "noFireEvent"); } else if (state == 'false') { this.selected(false, "noFireEvent"); } if (arguments[1] === true) { this.fireEvent(FR.Events.AFTEREDIT); // fire value } }, getText: function () { return this.options.text; }, reset: function () { this.selected(false); }, /** * 是否被选中 如果没有参数,则是get操作;如果有参数,则是set操作 * @return {Boolean} 如果控件处于被选中状态,返回true,否则返回false */ selected: function () { if (arguments.length === 0) { // james:现在应该是两种状态下都返回True啦 return this.isSelected(); } else { if (arguments[1] == "noFireEvent") { return this.setSelectedWithoutEvent(arguments[0]); } else { return this.setSelected(arguments[0]); } } }, /** * 控件是否处于选中状态 * @returns {Boolean} 选中状态返回true,未选中状态返回false */ isSelected: function () { return this.$btn.is('.' + this.selected_class); }, /** * 设置控件的选中状态 * @param selected 是否选中,选中为true,不选中为false * @returns {Boolean} 如果成功改变了状态则返回true,否则返回false */ setSelected: function (selected) { if (!this.setSelectedWithoutEvent(selected)) { return false; } this.fireEvent(FR.Events.STATECHANGE, this.selected()); return true; }, /** * 设置控件的选中状态但是不触发控件的“状态改变”事件 * @param selected 是否选中 * @returns {Boolean} 总是返回true */ setSelectedWithoutEvent: function (selected) { if (this.$formbtn) { this.$formbtn.attr("checked", selected !== false); } this.changeBoxState(selected); return true; }, destroy: function () { FR.ToggleButton.superclass.destroy.apply(this); }, doResize: function (give) { FR.ToggleButton.superclass.doResize.call(this, give); } }); /** * 复选框 * * @example * var editor = new FR.CheckBox({ * renderEl : 'body', * text : "是否显示实际值", * selected : true, //是否被选中 * disabled : false //状态是否可变 * }); * * @class FR.CheckBox * @extends FR.ToggleButton */ FR.CheckBox = FR.extend(FR.ToggleButton, /**@class FR.CheckBox*/{ /** * @property {String} selected_class 复选框处于选中状态时的样式表类 */ selected_class: 'fr-checkbox-checkon' , /** * @property {String} unselected_class 复选框处于未选中状态时的样式表类 */ unselected_class: 'fr-checkbox-checkoff' , /** * 复选按钮图标的高度, */ checkIconHeight: 17, _defaultConfig: function () { return $.extend(FR.CheckBox.superclass._defaultConfig.apply(), { marginleft: 5 }); }, _init: function () { FR.CheckBox.superclass._init.apply(this, arguments); var o = this.options; var lineHeight; if(this.element && FR.Browser.isIE){ //52212 ie下控件高度不对 this.element.css({ "width": o.width, "height": this.checkIconHeight }); lineHeight = this.checkIconHeight; } //lineheight控制垂直居中bug65664 if (lineHeight) { this.$btn.css({ 'margin-left': o.marginleft, 'height': 'inherit', 'line-height': lineHeight + 'px' }); } else { this.$btn.css('margin-left', o.marginleft); } }, initFormBtn: function () { if (this.options.sessionID && _g(this.options.sessionID).rtype == 'form') { var $par = $(this.$btn.parent()); $par.css("background-color", "white"); this.$box = $("<input type='checkbox'/>").css("display", "none").attr("name", this.options.widgetName) .appendTo($par); this.$box.attr("value", this.options.fieldValue || this.options.value || ''); } return this.$box; }, doResize: function (give) { FR.CheckBox.superclass.doResize.call(this, give); if (this.element) { this.$btn.css('line-height', this.element.height() + 'px'); } } }); $.shortcut("checkbox", FR.CheckBox) /** * 单选按钮 * * @example * var editor = new FR.RadioButton({ * renderEl : 'body', * text : "默认选中", * selected : true, * disabled : false * }); * * @class FR.RadioButton * @extends FR.ToggleButton */ FR.RadioButton = FR.extend(FR.ToggleButton, /**@class FR.RadioButton*/{ /** * @property {String} selected_class 单选按钮处于选中状态时的样式表类 */ selected_class: 'fr-radio-radioon' , /** * @property {String} unselected_class 单选按钮处于未选中状态时的样式表类 */ unselected_class: 'fr-radio-radiooff', _init: function () { FR.RadioButton.superclass._init.apply(this, arguments); }, initFormBtn: function () { if (this.options.sessionID && _g(this.options.sessionID).rtype == 'form') { var $par = $(this.$btn.parent()); $par.css("background-color", "white"); this.$radio = $("<input type='radio'/>").css("display", "none").attr("name", this.options.name || this.options.widgetName) .appendTo($par); this.$radio.attr("value", this.options.fieldValue || this.options.value || ''); } return this.$radio; } }); $.extend(FR.RadioButton, { RadioButtonGroup: {} }); $.shortcut("radio", FR.RadioButton) /** * 参数查询控件 * @class FR.FormSubmitButton */ FR.FormSubmitButton = FR.extend(FR.Button, { _init: function () { FR.FormSubmitButton.superclass._init.apply(this, arguments); } }); $.shortcut('formsubmit', FR.FormSubmitButton); /** * tab布局 切换tab控件 * @class FR.FormSubmitButton */ FR.CardSwitchButton = FR.extend(FR.FreeButton, { _init: function () { FR.CardSwitchButton.superclass._init.apply(this, arguments); this.$img.css('border-radius', '5px 5px 0 0'); this.element.css('border-radius', '5px 5px 0 0'); this.element.css('opacity', this.options.opacity); var self = this; var M = { cur_style : 0, onMouseOver: function (e) { var opacity = self.element.css('opacity'); cur_style = opacity; if(opacity === "1"){ return; } self.element.css('opacity', 1); }, onMouseOut: function (e) { //本身被选中的话, mouseout不需要改变透明度 if(cur_style === "1"){ return; } self.element.css('opacity', 0.6); }, onMouseDown: function (e) { var opacity = self.element.css('opacity'); cur_style = opacity; } } this.$img.mouseover(M.onMouseOver) .mouseout(M.onMouseOut) .mousedown(M.onMouseDown); } }); $.shortcut('cardswitch', FR.CardSwitchButton); })(jQuery);