// 告警框插件定义和设置
;(function($, window, document, undefined) {
// 定义confirm类
var Confirm = function (ele, options) {
this.ele = ele;
this.opts = options;
this.confirmMask = $('.confirm-mask');
//this.ele.draggable(); // 可以拖动依赖jqueryui
};
// 创建Confirm
Confirm.prototype.create = function() {
// 清空容器
this.ele.text(" ");
this.ele.addClass('myconfirm');
var confirmHd = $('
'); //confirm的头部
var confirmContent = $(''); // confirm的内容
var confirmFo = $(''); // confirm的底部
var confirmMask = $(''); // confirm的遮罩层
/* 定义头部 */
confirmHd.append($('系统提示
'));
confirmHd.append($(''));
/* 定义底部 */
confirmFo.append($(''));
confirmFo.append($(''));
this.ele.append(confirmHd);
this.ele.append(confirmContent);
this.ele.append(confirmFo);
$('body').append(confirmMask);
this.confirmMask = $('.confirm-mask');
this.center(); // 自动执行居中操作
// 设置移出事件
var ele = this.ele;
this.ele.find('.close').click(function() {
ele.myConfirm('hide');
});
};
// 使Confirm处在屏幕的中间
Confirm.prototype.center = function() {
var wid = this.ele.width();
var ht = this.ele.height();
var winHt = $(window).height();
this.ele.css({
top: (winHt-ht)/2+'px'
});
};
// 显示Confirm
Confirm.prototype.show = function() {
if(!this.ele.hasClass('myconfirm')) {
this.create(); // 生成内容
}
var obj = this.opts;
// 判断是否是confirm
if(obj.type == 'alert') {
this.ele.find('.confirm-footer').hide();
}else {
this.ele.find('.confirm-footer').show();
}
this.ele.find('.confirm-header .title').text(obj.title);
this.ele.find('.confirm-content').html(obj.content);
if(isFunction(obj.enfunc)) {
$('#confirmEnsure').removeClass().addClass('confirm-ensure-btn').val(obj.value);
}else {
$('#confirmEnsure').removeClass().addClass(obj.cla=='none'?"":obj.cla).addClass('confirm-ensure-btn').val(obj.value);
}
// 显示confirm为淡入
this.ele.fadeIn();
this.confirmMask.fadeIn();
this.confirmMask.addClass('tmp-style');
if(obj.fadeout && obj.type=='alert') {
setTimeout(function() {
this.hide();
}.bind(this), obj.timeout);
}
// 向确认按钮添加点击事件
this.ensure();
};
// 隐藏Confirm
Confirm.prototype.hide = function() {
// 隐藏confirm为淡出
this.ele.fadeOut();
this.confirmMask.fadeOut();
this.confirmMask.removeClass('tmp-style');
};
// 确认按钮的事件绑定
Confirm.prototype.ensure = function() {
// 传入确认按钮的回调函数执行
var _this = this;
this.ele.off('click.myConfirm').on('click.myConfirm', '.confirm-ensure-btn', function() {
if(typeof _this.opts.enfunc == 'function') {
_this.hide(); // 隐藏弹出框
if(isArray(_this.opts.enparams)) {
_this.opts.enfunc.apply({}, _this.opts.enparams); // 执行回调函数
}else {
_this.opts.enfunc(); // 执行回调函数
}
}else {
console.log('可以在配置项中添加enfunc属性设置回调函数!');
}
});
};
$.fn.myConfirm = function(options) {
var defaults = {
title: '系统提示',
content: '是否确认操作',
type: 'confirm',
cla: 'none',
value: '确定',
timeout: 1500,
fadeout: false,
enfunc: '',
enparams:[],
stats: 'show'
};
var opts = {};
var tmp = {};
if(options == undefined || typeof options == 'string') {
switch(options) {
case 'hide':
tmp.stats = "hide";
break;
default:
tmp.stats = "show";
break;
}
opts = $.extend(true, {}, defaults, tmp);
}else {
opts = $.extend(true, {}, defaults, options);
}
var confirm = new Confirm(this, opts);
confirm[opts.stats]();
return this;
}
})(jQuery, window, document);
// 定义容器中表格
;(function($, window, document, undefined) {
/**
* @description 表格插件的定义
* @param jquery ele jquery选择器选中元素
* @param object options 插件的配置项
*/
var MyTbl = function(ele, options) {
this.ele = ele.eq(0);
this.opts = options;
this.init();
};
MyTbl.prototype = {
init: function() {
this.ele.addClass('tbl-container');
var cont = this.ele.height();
var header = this.ele.find('.tbl-header').height();
var footer = this.ele.find('.tbl-footer').height();
this.ele.find('.tbl-body').height(cont-header-footer-1);
},
create: function() {
var opts = this.formatOpts();
// 根据数据生成表格元素
var table = $('');
var thead = $('');
var tr = $('
');
for(var i=0; i'+opts.thead[i]+'');
tr.append(td);
}
thead.append(tr);
table.append(thead);
var tbody = $('');
for(var i=0; i');
for(var k=0; k'+opts.tbody[i][k]+'');
tr.append(td);
}
tr.data().attr = opts.attr[i];
tbody.append(tr);
}
table.append(tbody);
this.ele.find('.tbl-body').text("");
this.ele.find('.tbl-body').append(table);
this.ele.find('.tbl-header').html(this.ele.find('.tbl-body').html());
this.resize();
},
// 格式化数据
formatOpts: function() {
// 将配置项的数据存储到当前元素的
var opts = $.extend(true, {}, this.opts);
// 计算表格的行数
opts.rows = opts.tbody.length;
// 根据表格行数向attr中添加默认对象
for(var i=0; i');
// 根据容器不同设置不同的位置定位
if(this.ele.selector == 'body') {
uiLoading = $('');
}else {
// 设置从滚动条滚动的位置显示加载框
var scrollTop = this.ele.scrollTop();
uiLoading.css('top', scrollTop+'px');
}
var loadingContent = $('');
var loadingBg = $('');
var loadingImgs = $('
')
loadingContent.append(loadingBg);
loadingContent.append(loadingImgs);
uiLoading.append(loadingContent);
this.ele.append(uiLoading);
}
this.loading = this.ele.children('.whyc-ui-loading');
};
// 显示内容
_proto.show = function() {
this.loading.addClass('show');
};
// 移除加载等待内容
_proto.hide = function() {
this.ele.children('.whyc-ui-loading').remove();
this.ele.removeClass('loading-container');
};
// 配置项错误处理函数
_proto.error = function() {
console.log(this.opts.errorMsg);
};
$.fn.loading = function() {
var args = arguments[0]?arguments[0]:{}; // 处理参数
var options = {};
if(typeof args == 'string') { // 判断如果传入的数据是字符串
switch(args) {
case 'show':
options.stats = 'show';
break;
case 'hide':
options.stats = 'hide';
break;
default:
options.stats = 'error';
options.errorMsg = '加载等待中没有这样的事件!!!';
break;
}
}else if(args.constructor.name == 'Array') {
options.errorMsg = '传入的数据不能是为数组类型!!!';
options.stats = 'error';
}
var defaults = {
stats: 'show',
errorMsg:''
};
var opts = $.extend(true, {}, defaults, options);
var loading = new Loading(this, opts);
loading[opts.stats](); // 执行对应的方法
return this;
}
})(jQuery, window, document);
// tooltip插件
;(function($) {
var Tooltip = function(ele, options) {
this.init(ele, options);
};
var _proto = Tooltip.prototype;
// 初始化tooltip的成员属性
_proto.init = function(ele, options) {
this.ele = ele;
this.parent = this.ele.parent();
this.opts = options;
this.id = this.ele.attr('id')+'Tooltip';
this.tooltip = $('#'+this.id);
};
// 构造tooltip的基本结构
_proto.structure = function() {
this.parent.addClass('whyc-tooltip-container');
if(this.tooltip.length == 0) {
var whycT = $('');
var tooltipContainer = $('');
var tooltipT = $('');
var tContainer = $('');
var tTriange = $('');
tContainer.append(tTriange);
tooltipT.append(tContainer);
var tContent = $(''+this.opts.content+'
');
tooltipContainer.append(tooltipT);
tooltipContainer.append(tContent);
whycT.append(tooltipContainer);
this.tooltip = whycT;
this.parent.append(this.tooltip);
this.setPosition(this.tooltip);
}
// 更新提示信息
if(this.opts.update) {
this.parent.find('.tooltip-c').html(this.opts.content);
}
};
// 根据元素的位置显示tooltip
_proto.setPosition = function(tooltip) {
var eleX = this.ele.position().left;
var eleY = this.ele.position().top;
var eHt = this.ele.height();
var tHt = this.tooltip.height();
var yShift = eleY-tHt-15;
if(this.opts.position == 'top') {
yShift = eleY+eHt+18;
}
tooltip.css({
left: eleX+'px',
top: yShift+'px'
});
}
// 显示tooltip提示框
_proto.show = function() {
this.structure();
this.tooltip.addClass('show');
};
// 隐藏tooltip提示框
_proto.hide= function() {
this.parent.removeClass('whyc-tooltip-container');
this.tooltip.removeClass('show');
};
// 输入参数失败执行函数
_proto.error = function() {
console.log('参数设置格式有误!');
};
$.fn.myTooltip = function() {
// 当前容器必须有id才可以使用myTooltip插件
if(this.attr('id') == undefined) {
console.log('当前元素不是唯一, 无法定位!');
return;
}
var defaults = {
position: 'top',
content: '内容提示!',
thing: 'show',
update: false
};
var tmp = {};
if(arguments.length != 0) {
if(typeof arguments[0] == 'string') {
switch(arguments[0]) {
case 'show':
tmp.thing = 'show';
break;
case 'hide':
tmp.thing = 'hide';
break;
default:
tmp.thing = 'error';
break;
}
}else{
tmp = $.extend(true, {}, arguments[0]);
}
}
var opts = $.extend(true, {}, defaults, tmp)
var tooltip = new Tooltip(this, opts);
tooltip[opts.thing]();
return this;
};
})(jQuery);
//文本框数据格式验证
;(function($) {
var TestVal = function(ele, options) {
this.ele = ele;
this.opts = options;
this.ele.data('testVal', options);
};
var _proto = TestVal.prototype;
// 根据数据的正确性修改文本框的样式
_proto.changeVal = function() {
var testVal = this;
this.ele.off('input propertychange blur focus');
// 文本框内容改变
this.ele.on('input propertychange', function() {
testVal.changeValEvent(testVal, $(this));
});
// 失去焦点
this.ele.on('blur', function() {
//$(this).next('i').removeClass('error-data');
$(this).myTooltip('hide');
});
// 获取焦点
this.ele.on('focus', function() {
testVal.changeValEvent(testVal, $(this));
});
};
_proto.changeValEvent = function(testVal, ele) {
var isValidate = testVal.regVal();
if(isValidate) {
ele.next('i').removeClass('error-data');
ele.myTooltip('hide');
ele.removeClass('error-data');
// 遍历testVal.opts.btn的值
testVal.opts.btn.each(function() {
if(!$(this).hasClass('error-data')) {
$(this).removeClass('whyc-btn-disabled');
}
$(this).removeClass('error-data');
});
}else {
ele.next('i').addClass('error-data');
//console.log(testVal.opts.msg);
ele.myTooltip({
position: testVal.opts.position,
thing: 'show',
update: testVal.opts.update,
content: ''+testVal.opts.msg+''
});
ele.addClass('error-data');
// 遍历testVal.opts.btn的值
testVal.opts.btn.each(function() {
if(!$(this).hasClass('whyc-btn-disabled') && !$(this).hasClass('error-data')) {
$(this).addClass('whyc-btn-disabled');
}else {
$(this).addClass('whyc-btn-disabled error-data');
}
});
testVal.opts.btn.addClass('whyc-btn-disabled');
}
};
// 根据正则表达式验证数据的合法性
_proto.regVal = function() {
var flag = true;
var val = this.ele.val();
if(!this.opts.pattern.test(val)) {
flag = false;
}
// 数据的格式符合要求
if(flag && this.opts.regVal) {
// val值不在取值范围
if(valthis.opts.max) {
flag = false;
}
}
return flag;
};
_proto.error = function() {
console.info(this.opts.msg);
};
$.fn.testVal = function(options, attr, val) {
var defaults = {
pattern: "",
event: "changeVal",
btn: $('#btn_temp'),
msg: "错误信息描述",
regVal: false,
update: false,
min: 0,
max: 0,
position: 'bottom'
};
var opts = {};
// 判断是否为更新配置项
if(isString(options)) {
var oldOpts = this.data('testVal');
opts = $.extend({}, opts, oldOpts);
if(attr == 'allOpts') {
opts = $.extend({}, opts, val);
}else {
opts[attr] = val;
}
}else if(isObject(options)){
opts = $.extend(true, {}, defaults, options||{});
}
// console.log(opts);
if(opts.pattern.constructor.name != 'RegExp') {
opts.event = "error";
opts.msg = '请输入正确的正则表达式格式!!!'
}
//console.log(opts);
var testVal = new TestVal(this, opts);
this.data('testVal', testVal.opts);
testVal[opts.event]();
return this;
};
})(jQuery);