效果图:
各文件路径(我的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>