[js]Easyui组件扩展--fieldset

本文介绍了如何扩展Easyui的fieldset组件,展示了扩展后的效果,并提供了相关文件的路径,包括lq.fieldset.js、extrafieldsetlq.fieldset.css以及示例页面lq.fieldset.html。
摘要由CSDN通过智能技术生成

效果图:


 

各文件路径(我的extra文件夹与easyui文件夹在同一等级):

extra\fieldset\lq.fieldset.js主要js文件
extra\fieldset\lq.fieldset.css主要样式文件
extra\fieldset\lq.fieldset.html测试页面
extra\fieldset\images\panel_tools.png按钮图标(拷贝于easyui,可根据主题不同进行修改)

 

lq.fieldset.js

/*
	Easyui1.4.2
	Create time:2015-11-02  Author:duolaaqian
	
	$("#fs").lqfieldset({
		title:'个人信息',				//标题显示文字
		collapsible:true,				//是否可伸缩
		collapsed:false,				//初始化状态 是否为收起状态
		checkboxToggle:false,			//伸缩按钮是否为checkbox
		onBeforeCollapse:function(){	//收起之前调用该方法,返回false则取消收起
		},
		onCollapse:function(){			//收起之后调用该方法
		},
		onBeforeExpand:function(){		//展开之前调用该方法,返回false则取消展开
		},
		onExpand:function(){			//展开之后调用该方法
		}
	});
	
	$("#fs").lqfieldset('collapse');	//收起组件
	$("#fs").lqfieldset('expand');		//展开组件
*/
;(function ($) {
	//添加自定义方法
	function initFieldSet(thisObj){
		initDom(thisObj);
		refreshFront(thisObj);
	};
	function initDom(thisObj){
		var thisData = $.data(thisObj, "lqfieldset");
		var thisOptions = thisData.options;
		var innerDom = $(thisObj).wrap("<fieldset class='lq-fieldset'></fieldset>");
		innerDom.wrap('<div class="lq-fieldset-wrapmain" ></div>');
		innerDom = innerDom.parent('div.lq-fieldset-wrapmain');
		if(thisOptions.title||thisOptions.collapsible){
			var fieldSetDom = innerDom.parent('fieldset');
			thisOptions.fieldSetDom = fieldSetDom;
			var checkboxToggle = thisOptions.checkboxToggle;
			if(checkboxToggle){
				innerDom = innerDom.before("<legend class='lq-fieldset-legend'>"
						+'<input type="checkbox" />'
						+'<span>'+thisOptions.title+"</span></legend>");
				var dd = fieldSetDom.find('input[type=checkbox]');
				dd.unbind('.lqfieldset').bind('change.lqfieldset',function(){
					var checked = $(this).prop("checked");
					if(checked){
						doExpand(thisObj);
					}else{
						doCollapse(thisObj);
					}
				});
			}else{
				innerDom = innerDom.before("<legend class='lq-fieldset-legend'>"
						+'<a href="javascript:void(0)" class="lq-fieldset-legend-icon"></a>'
						+'<span>'+thisOptions.title+"</span></legend>");
				var dd = fieldSetDom.find('a.lq-fieldset-legend-icon');
				dd.unbind('.lqfieldset').bind('click.lqfieldset',function(){
					var collapsed = thisOptions.collapsed;
					if(collapsed){
						doExpand(thisObj);
					}else{
						doCollapse(thisObj);
					}
				}).bind('mouseover',function(){
					dd.removeClass("mouseout").addClass("mouseover");
				}).bind('mouseout',function(){
					dd.removeClass("mouseover").addClass("mouseout");
				});
			}
			if(!thisOptions.collapsible){
				fieldSetDom.find('.lq-fieldset-legend a').remove();
				fieldSetDom.find('.lq-fieldset-legend input[type=checkbox]').remove();
			}
		}
		diLimitSize(thisObj,innerDom);
	};
	function refreshFront(thisObj){
		var thisData = $.data(thisObj, "lqfieldset");
		var thisOptions = thisData.options;
		var collapsed = thisOptions.collapsed;
		if(collapsed){
			doCollapse(thisObj);
		}else{
			doExpand(thisObj);
		}
	};
	//收缩
	function doCollapse(thisObj){
		var thisData = $.data(thisObj, "lqfieldset");
		var thisOptions = thisData.options;
		if(thisOptions.onBeforeCollapse.call(thisObj) == false){
			return;
		}
		var fieldSetDom = thisOptions.fieldSetDom;
		thisOptions.collapsed = true;
		fieldSetDom.removeClass('expand').addClass('collapse');
		fieldSetDom.find('input[type=checkbox]').prop('checked',false);
		thisOptions.onCollapse.call(thisObj);
	};
	//展开
	function doExpand(thisObj){
		var thisData = $.data(thisObj, "lqfieldset");
		var thisOptions = thisData.options;
		if(thisOptions.onBeforeExpand.call(thisObj) == false){
			return;
		}
		var fieldSetDom = thisOptions.fieldSetDom;
		thisOptions.collapsed = false;
		fieldSetDom.removeClass('collapse').addClass('expand');
		fieldSetDom.find('input[type=checkbox]').prop('checked',true);
		thisOptions.onExpand.call(thisObj);
	};
	function diLimitSize(thisObj,innerDom){
		var thisData = $.data(thisObj, "lqfieldset");
		var thisOptions = thisData.options;
		var innerHeight = innerDom.height();
		var maxHeight = thisOptions.maxHeight;
		var minHeight = thisOptions.minHeight;
		if( maxHeight && $.isNumeric(maxHeight) ){
			if(innerHeight>maxHeight){
				innerDom.height(maxHeight);
			}
		}
		if( minHeight && $.isNumeric(minHeight) ){
			if(innerHeight<minHeight){
				innerDom.height(minHeight);
			}
		}
		var innerWidth = innerDom.width();
		var maxWidth = thisOptions.maxWidth;
		var minWidth = thisOptions.minWidth;
		if(maxWidth&&$.isNumeric(maxWidth)){
			if(innerWidth>maxWidth){
				innerDom.width(maxWidth);
			}
		}
		if(minWidth&&$.isNumeric(minWidth)){
			if(innerWidth<minWidth){
				innerDom.width(minWidth);
			}
		}
	};

	//初始化组件的时候调用此方法
    $.fn.lqfieldset = function(param1,param2){
		if (typeof param1 == "string") {
			return $.fn.lqfieldset.methods[param1](this, param2);
		}
		param1 = param1 || {};
		return this.each(function() {
			var thisData = $.data(this, "lqfieldset");
			if (thisData) {
				$.extend(thisData.options, param1);
			} else {
				thisData = $.data(this, "lqfieldset", {
					options : $.extend( {}, $.fn.lqfieldset.defaults, param1)
				});
				initFieldSet(this);//自定义方法
			}
		});
    };
	//定义默认属性,初始化的时候可调用
	$.fn.lqfieldset.defaults = {
		title:"",
		maxHeight:null,
		collapsible: true,//是否可缩放
		collapsed: true,//初始状态是否缩放
		checkboxToggle: false,//缩放按钮是否显示为checkbox
		onBeforeCollapse:function(){
		},
		onCollapse:function(){
		},
		onBeforeExpand:function(){
		},
		onExpand:function(){
		}
	}
	//支持的方法
	$.fn.lqfieldset.methods = {
		lqfieldset:function(){
			alert("lqfieldset!");
		},
		options: function(thisObj) {
			var thisOptions = $.data(thisObj[0], "lqfieldset").options;
			return thisOptions;
		},
		collapse:function(thisObj){
			thisObj.each(function(){
				doCollapse(this);
			});
		},
		expand :function(thisObj){
			thisObj.each(function(){
				doExpand(this);
			});
		}
	}
})(jQuery);

 

extra\fieldset\lq.fieldset.css

.lq-fieldset{border:1px solid;padding:10px;/*margin-bottom:10px;*/display:block;}
.lq-fieldset.collapse{padding-bottom:0 !important;border-width:1px 1px 0 1px !important;border-left-color:transparent;border-right-color:transparent;}
.lq-fieldset.expand{}

.lq-fieldset .lq-fieldset-wrapmain{overflow:auto;}
.lq-fieldset.expand .lq-fieldset-wrapmain{display:block;}
.lq-fieldset.collapse .lq-fieldset-wrapmain{display:none;}

.lq-fieldset-legend{}
.lq-fieldset-legend a{width:16px;height:16px;opacity:0.6;display:inline-block;margin:0 2px 0 2px;vertical-align:top}
.lq-fieldset-legend a.mouseout{opacity:0.6;}
.lq-fieldset-legend a.mouseover{opacity:1;}

.lq-fieldset-legend>span{font:bold 12px verdana,helvetica,arial,sans-serif;}

/*yuan jiao*/
.lq-fieldset{border-bottom-left-radius: 4px;border-bottom-right-radius: 4px;}

/*icon*/
.collapse .lq-fieldset-legend-icon{background: url('images/panel_tools.png') no-repeat -32px -16px;}
.expand .lq-fieldset-legend-icon{background: url('images/panel_tools.png') no-repeat -32px 0;}

/***color***/
.lq-fieldset{border-color: #95B8E7;}/*边框颜色*/
.lq-fieldset-legend>span{color:#15428b;}/*标题颜色*/

 

lq.fieldset.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>fieldset</title>
<script type="text/javascript" src="../../jquery-easyui-1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="../../jquery-easyui-1.4.2/jquery.easyui.min.js"></script>
<link rel="stylesheet" type="text/css" href="../../jquery-easyui-1.4.2/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="lq.fieldset.css"/>
<script type="text/javascript" src="lq.fieldset.js"></script>
<style type="text/css">
.text-align-right{
	text-align:right
}
</style>
<script type="text/javascript">
$(function(){
	$("#fs").lqfieldset({
		title:'个人信息',
		collapsible:true,
		collapsed:false,
		checkboxToggle:false
	});
});
</script>
</head>
<body>
	<div style="width:300px;">
		<div id="fs">
			<table>
				<tr>
					<td class="text-align-right">姓名:</td>
					<td><input type="text" class="easyui-textbox" /></td>
				</tr>
				<tr>
					<td class="text-align-right">性别:</td>
					<td><input type="text" class="easyui-textbox" /></td>
				</tr>
				<tr>
					<td class="text-align-right">出生日期:</td>
					<td><input type="text" class="easyui-textbox" /></td>
				</tr>
			</table>
		</div>
	</div>
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值