/**
* jQuery 扩展
*/
(function ($) {
$.fn.extend({
/**
* 目标为任意对象元素
* 同时绑定单击和双击事件
*/
bindClick: function (click, dblClick, el) {
el = el || $(this);
var _time = null;
el.dblclick(function (e) {
clearTimeout(_time);
if (dblClick)
dblClick.apply(e.target, [e]);
}).click(function (e) {
clearTimeout(_time);
_time = setTimeout(function () {
if (click)
click.apply(e.target, [e]);
}, 250);
});
},//bindClick

/**
* url 请求地址
* convert 是否将参数字符串化 配合controller请求使用 默认false
* opts 为ajax请求对象
* opts.data 为请求参数
* opts.success 和 opts.error
* 分别为请求成功或失败时回调函数function 或对话框内容
* 对话框时举例: {message:'对话框内容',title:'对话框标题'}
*/
exajax: function (url, opts, convert) {
var ajaxParam = {
url: url,
async: false, // 同步
type: 'POST', // 请求类型
cache: false, // 不缓存
dataType: 'json',
success: '',
error: '',
timeout:0
};
opts = opts || {};
for (var k in opts) {
if (ajaxParam.hasOwnProperty(k) || 'data' == k) {
if (k == 'data') {
try {
var params = opts['data'];
if (!convert) {
params = JSON.stringify(params);
ajaxParam.contentType = 'application/json';
}
ajaxParam.data = params;
} catch (e) {
}
} else if (k == 'success') {
var success = opts[k];
ajaxParam[k] = function (data) {
if (success) {
if (typeof success == 'function') {
success.apply(success, [data]);
} else {
if (success.message) {
$().dialog({
data: success.message || "操作成功!",
title: success.title
}).modal('show');
}
}
}
}
} else if (k == 'error') {
var error = opts[k];
ajaxParam[k] = function (e) {
if (error) {
if (typeof error == 'function') {
error.apply(error, [e]);
} else {
if (error.message) {
toastr.error("系统未知错误!" + error.message);
}
}
}
}
} else {
ajaxParam[k] = opts[k];
}
}
}
return $.ajax(ajaxParam);
},//exajax

/**
* opts{data:data,init:{
* startDate:new Date()
* },format:{
* endDate:new Date(),//function(){return ...}
* isLeader:function(val){ if(val==1){
* return true; else{
* return false;
* }
* }}
* }}
* 1.赋值
* 目标元素为form表单
* opts.data 为和表单字段对应的数据对象 会自动根据数据进行字段值填充
* opts.init 为表单初始化值或初始化回调方法
* opts.format 为表单赋值格式化回调函数
* 支持input select checkbox radio等表单元素的赋值
* 2.取值
* 当opts.data不存在时 方法作用变为返回封装了目标表单的所有字段值的数据对象
*/
formVals: function (opts, el) {
el = el || $(this);
if (!el || !el.get(0).elements) {
return;
}
opts = opts || {};
var format = opts.format;
var init = opts.init;
var data = opts.data;
var elementsObj = el.get(0).elements;
var val;
if (data != undefined) {//赋值
if (init) {//整合默认值
data = _.defaults(data, init);
}
var obj;
if (elementsObj) {
_.each(elementsObj, function (obj) {
if (obj.tagName == "INPUT" || obj.tagName == "SELECT") {
val = null;
if (data[obj.name] != undefined) {
var func = data[obj.name];
if (typeof (func) == 'function') {
val = func.apply(func, [val, obj, elementsObj]);
} else {
val = func;
}
}
if (obj.type == "select-multiple" && obj.multiple) {
val = $(obj).val(val);
}
if (format && format[obj.name] != undefined) {
func = format[obj.name];
if (typeof (func) == 'function') {
val = func.apply(func, [val, obj, data]);
} else {
val = func;
}
}
if (obj.type == 'checkbox' || obj.type == 'radio') {
if (obj.value != undefined && (val instanceof Array)) {
for (var v in val) {
if (val[v] == obj.value) {
$(obj).prop("checked", true);
}
}
} else {
if (null != val && val != undefined && (val == obj.value)) {
$(obj).prop("checked", true);
} else {
$(obj).prop("checked", false);
}
}
} else if (obj.type == 'file') {
//do nothing;
} else {
obj.value = val;
}
}
});
}
} else {//取值
var ret = {};
if (elementsObj) {
_.each(elementsObj, function (obj) {
val = null;
if (obj.tagName == "INPUT" || obj.tagName == "SELECT") {//
val = obj.value;
if (obj.type == "select-multiple" && obj.multiple) {
val = $(obj).val();
}
if (obj.name == "id" && obj.value == "") {
val = null;
}
if (obj.type == 'checkbox' || obj.type == 'radio') {
if ($(obj).is(':checked')) {
var result;
if (typeof obj.value != undefined) {
result = obj.value;
}
if (obj.type == 'radio') {
ret[obj.name] = result;
} else {
if (!ret[obj.name]) {
ret[obj.name] = [];
}
ret[obj.name].push(result);
}
}
}
if (format && format[obj.name] != undefined) {
func = format[obj.name];
if (typeof (func) == 'function') {
val = func.apply(func, [val, obj]);
} else {
val = func;
}
}
if (obj.type != 'checkbox' && obj.type != 'radio') {
ret[obj.name] = val;
}
}
});
return ret;
}
}
return el;
},//formVals

/**
* 目标对象表单
* 作用为重置表单
* opts.init 为数据对象 定义字段的初始化默认值或初始化回调方法
*/
formReset: function (opts, el) {
el = el || $(this);
if (!el || !el.get(0).elements) {
return;
}
opts = opts || {};
var elementsObj = el.get(0).elements;
var obj;
if (elementsObj) {
var init = opts.init;
for (var i = 0; i < elementsObj.length; i += 1) {
obj = elementsObj[i];
if (obj.tagName == "INPUT" || obj.tagName == "SELECT") {
var val = obj.initValue || '';
if (init) {
if (undefined != init[obj.name] && null != init[obj.name]) {
var func = init[obj.name];
if (typeof (func) == 'function') {
val = func.apply(func, [val, obj, elementsObj]);
} else {
val = func;
}
}
}
if (obj.type == 'checkbox' || obj.type == 'radio') {
if (val == true || val == 1) {
$(obj).prop("checked", true);
} else {
$(obj).prop("checked", false);
}
} else {
obj.value = val;
}
}
}
}
return el;
},//formReset

});

//禁止后退键 作用于IE、Chrome
// document.onkeydown=banBackSpace;
//禁止后退键 作用于Firefox、Opera
//document.onkeypress=banBackSpace;
})(jQuery);

/* 提示全局设置 */
toastr.options = {
"debug": false,
"newestOnTop": false,
"positionClass": "toast-bottom-right",
"closeButton": true,
"progressBar": true,
preventDuplicates: true
};

/**
* [createElement 创建HTML文本]
* @param {[array]} data [数组]
* @param {[string]} type [类型eg:form,text]
* @return {[string]} [返回html文本]
*/
function createElement(data, type) {
var strTmp = '';
if (type == 'form') {
var form = $('<form>');
form.attr('id', 'formDialog');
$.each(data, function (index, item) {
if (item.type == 'file') {
strTmp +=
`<div class="form-group">
<label for="${item.name}" class="col-sm-3 control-label">${item.displayName}</label>
<div class="col-sm-9">
<label class="btn btn-default" for="${item.name}">
<input id="${item.name}" type="${item.type}" style="display:none;"
onchange="$('#upload-file-info').html($(this).val());">
${item.displayName}
</label>
<span class='label label-default' id="upload-file-info"></span>
</div>
</div>`;
} else if (item.type == 'hidden') {
strTmp +=
`<div">
<input type="hidden" id="${item.name}" name="${item.name}" value="${item.value}">
</div>`;
} else if (item.type == 'textarea') {
var attrTpl = '';
if(typeof item.maxlength != "undefined" && item.maxlength != null) {
attrTpl = `maxlength="${item.maxlength}"`;
}
strTmp +=
`<div class="form-group has-feedback">
<label for="${item.name}" control-label">${item.displayName}</label>
<textarea name="${item.name}" ${attrTpl} class="form-control" id="${item.name}" placeholder="${item.displayName}"></textarea>
</div>`;
} else if (item.type == 'select') {
strTmp +=
`<div class="form-group">
<label for="${item.name}" class="col-sm-3 control-label">${item.displayName}</label>
<div class="col-sm-9">
<select id="${item.name}" class="select2_demo_1 form-control" style="width: 100%">
<option value="1">分层1</option>
<option value="2">分层2</option>
<option value="3">分层3</option>
<option value="4">分层4</option>
<option value="5">分层5</option>
</select>
</div>
</div>`;
} else if (item.type == 'radio') {
strTmp +=
`<div class="form-group has-feedback">
<label for="${item.name}">${item.displayName}</label>
<div>`;
$.each(item.child, function (i, e) {
if (i == 0) {
strTmp += `
<div class="radio radio-info radio-inline">
<input type="radio" id="${item.name}${i}" value="${e.value}" name="${item.name}" checked="true">
<label for="${item.name}${i}">${e.name}</label>
</div>
`;
} else {
strTmp += `
<div class="radio radio-info radio-inline">
<input type="radio" id="${item.name}${i}" value="${e.value}" name="${item.name}">
<label for="${item.name}${i}">${e.name}</label>
</div>
`;
}
});
strTmp += `
</div>
</div>`;
} else {
strTmp +=
`<div class="form-group has-feedback">
<label for="${item.name}" control-label">${item.displayName}</label>
<input type="${item.type}" name="${item.name}" class="form-control" ${item.disabled ? 'disabled' : ''} id="${item.name}" value="${item.value ? item.value : ''}">
</div>`;
}
})
form.append(strTmp);
setTimeout(function () {
$('#formDialog input:visible:enabled:first').focus();
$('#formDialog textarea:visible:enabled:first').focus();
},500);
return form;
} else if (type == 'text') {
strTmp += `<p>${data[0]}</p>`;

strTmp += '<div class="row">'
$.each(data, function (index, item) {
if (index !== 0) {
strTmp += `<p style="font-size:12px;margin-top:10px;" class="col-sm-4">${item}</p>`
}
})
strTmp += '</div>'
return strTmp;
}
}

/**
* [给jquery validate 添加验证规则]
* @param {[type]} value [description]
* @param {[type]} element [description]
* @return {[type]} [description]
*/
jQuery.validator.addMethod("moreZero", function (value, element) {
var moreZero = /^\+?[0-9]*$/; // 大于等于0的数字'
return moreZero.test(value);
}, "大于等于0的数字");
jQuery.validator.addMethod("checkIp", function (value, element) {
var checkIp = /^((25[0-5]|2[0-4]\d|[01]?\d\d?)($|(?!\.$)\.)){4}$/;//ip格式验证
return !!value.match(checkIp)
}, "请填写正确ip地址")
jQuery.validator.addMethod("checkPicSize", function (value, element) {
var fileSize = element.files[0].size;
var maxSize = 5 * 1024 * 1024;
if (fileSize > maxSize) {
return false;
} else {
return true;
}
}, "请上传大小在5M一下的文件");
jQuery.validator.addMethod("checkPicsuffix", function (value, element, param) {
if (param) {
if (value == '') {
return true;
}
var length = value.length;
var suffixArray = param.split('|');
var suffix = value.substr(length - 3, length);
for (var i = 0; i < suffixArray.length; i++) {
if (suffixArray[i] == suffix) {
return true;
}
}
}
return false;
}, "请上传符合格式的文件");

jQuery.validator.addMethod("password", function (value, element) {
var tel = /^[a-zA-Z0-9]{4,20}$/;
return this.optional(element) || (tel.test(value));
}, "只能由4-20位字母或数字组成");
/**
* 过滤所有特殊字符串和空格
* @param s
* @returns {boolean}
*/
jQuery.validator.addMethod("testNameSpecial", function (value, element) {
var pattern = new RegExp("[`\\+\\-~ !@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?%·]")
return !pattern.test(value);
}, "名称不能有特殊字符");
/**
* 过滤所有特殊字符串和空格 除#
* @param
* @returns {boolean}
*/
jQuery.validator.addMethod("nameSpecial", function (value, element) {
var pattern = new RegExp("[`\\+\\-~ !@$^&*()=|{}':;',\\[\\].<>/?~!@¥……&*()——|{}【】‘;:”“'。,、?%·]")
return !pattern.test(value);
}, "名称不能有特殊字符");

jQuery.fn.slideLeftHide = function (speed, callback) {
this.animate({
width: "hide",
paddingLeft: "hide",
paddingRight: "hide",
marginLeft: "hide",
marginRight: "hide"
}, speed, callback);
};
jQuery.fn.slideLeftShow = function (speed, callback) {
this.animate({
width: "show",
paddingLeft: "show",
paddingRight: "show",
marginLeft: "show",
marginRight: "show"
}, speed, callback);
};
jQuery.validator.addMethod("checkpSn", function (value, element) {
var checkpSn = /^[0-9A-Fa-f]{8,8}$/;
return !!value.match(checkpSn)
}, "请填写正确的序列号,如:FFFF0000");

/**
* 过滤所有特殊字符串和空格
* @param s
* @returns {boolean}
*/

function specialVerificationName(s) {
var pattern = new RegExp("[`\\+\\-~ !@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?%·]")
return pattern.test(s);
}

// 全局设置AJAX
function setAjaxGlobalOptions() {
//设置AJAX的全局默认选项
$.ajaxSetup({
async: true,//同步请求
timeout: 10000,//超时时间
complete: function (XMLHttpRequest, textStatus) {
// 未授权返回登录界面
if(XMLHttpRequest.status == 401 || XMLHttpRequest.status == 302){
window.open ('/ut-web','_top');
}
}
});
}

$(function () {
setAjaxGlobalOptions();
});

//时间戳转年月日时分秒
Date.prototype.toLocaleString = function () {
return this.getFullYear() + "/" + (this.getMonth() + 1) + "/" + this.getDate() + "/ " + this.getHours() + ":" + this.getMinutes() + ":" + this.getSeconds();
};
//格式化时间
Date.prototype.format = function (fmt) {
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds(), //毫秒
"w+": this.getDay() //星期
};
if (/(y+)/.test(fmt))
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}

// 时间控件全局设置语言
$.datetimepicker.setLocale('ch');

// tool 全局配置
var tool = {
//获取当前视图高 如果传入节点,获取节点高度
getClientHeight: function (node) {
if (typeof node != 'undefined') {
return $(node).height();
}
return document.body.clientHeight;
},
//获取url中的参数
getUrlParam: function (name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
var r = window.location.search.substr(1).match(reg); //匹配目标参数
if (r != null) return unescape(r[2]);
return null; //返回参数值
},
/*
* 封装jquery validate方法
* 参数 id string form表单ID,jquery获取dom元素一样
* 参数 relus object 参考jquery validate relus
* 参数 messages object 参考 jquery validate
* 返回 无
* */
validate: function (id, rules, messages) {
var validate = $(id).validate({
ignore: '',
rules: rules,
focusInvalid: true,
messages: messages,
errorPlacement: function (error, element) {
element.next().remove();
// 加上x 图标
element.after('<span class="glyphicon glyphicon-remove form-control-feedback" aria-hidden="true"></span>');
element.closest('.form-group').append(error);
},
// 给未通过的元素进行处理
highlight: function (element) {
$(element).closest('.form-group').removeClass('has-success').addClass('has-error');
},
// 验证通过的处理
success: function (label) {
var el = label.closest('.form-group').find('input');
el.next().remove();
el.after('<span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>');
label.closest('.form-group').removeClass('has-error').addClass('has-success');
label.remove();

}
});
return validate;
},
/**
* niceScroll.js 滚动条样式修改
* @param node id,class jquery获取dom元素一样
* @return niceScroll 对象
*/
changeScroll: function (node, obj) {
var scroll = $(node).mCustomScrollbar(obj);
return scroll;
},
/*
* 把constant.js 变量转成select2下拉框格式
* */
formatSelectData: function (item) {
var newArr = [];
$.each(item, function (i, ele) {
if(typeof ele != "function") {
newArr.push({
id: i,
text: ele
})
}
})
return newArr.reverse();
},
/**
* 时间控件
*/
datetimepicker: function (node, obj) {
var obj = obj || {};
obj.theme = 'dark';
$(node).datetimepicker(obj);
},
/**
* Search
*/
searchInput: function (node) {
var ele = $(node);
var input = ele.find('input');
var clear = ele.find('.searchClear');
input.on('input change', function () {
if ($(this).val().length != 0) {
clear.css('display', 'block');
} else {
clear.css('display', 'none');
}
});
clear.on('click', function () {
input.val('').trigger('input').trigger('change');
$(this).css('display', 'none');
})
},
/**
* select2()
*/
select2: function (node, obj) {
obj.language = 'zh-CN';
var select = $(node).select2(obj);
return select;
},
/**
* 创建表格
* @param opts {
* tableName: '',
* height: 100,
* columns: [],
* url: '',
* onClickRow: method
* }
* @return table
*/
createTable: function (opts) {
var table = $(opts.tableName).bootstrapTable({
height: opts.height || undefined,
columns: opts.columns || [],
formatLoadingMessage: function () {
return "请稍等,正在加载中...<i class='fa fa-spinner fa-spin fa-fw'></i>";
},
url: opts.url || '',
method: 'get',
cache: false,
dataType: 'json',
onClickRow: opts.onClickRow || function () { },
ajaxOptions: opts.ajaxOptions || {},
data: opts.data || [],
rowStyle: opts.rowStyle || undefined,
queryParams: opts.queryParams,
clickToSelect: opts.clickToSelect || false,
singleSelect: opts.singleSelect || false,
});
return table;
},
/**
* 获取预览图地址
* @param file 文件
*/
getObjectURL: function (file) {
var url = null;
if (window.createObjectURL != undefined) {
url = window.createObjectURL(file)
} else if (window.URL != undefined) {
url = window.URL.createObjectURL(file)
} else if (window.webkitURL != undefined) {
url = window.webkitURL.createObjectURL(file)
}
return url;
},
/**
* 获取用户信息
* @return {null}
*/
getUserInfo: function () {
if (typeof localStorage.userInfo != 'undefined') {
return JSON.parse(localStorage.userInfo);
} else {
return null;
}
},
showEmpInfo: function (opts) {
var text = '';
if (typeof opts.empName != 'undefined' && opts.empName) text += opts.empName + '(';
else text += '未知(';
if (typeof opts.terminalSn != 'undefined' && opts.terminalSn) text += opts.terminalSn;
else text += '无';
if (typeof opts.empJobNo != 'undefined' && opts.empJobNo) text += ' - ' + opts.empJobNo;
else if(typeof opts.jobno != 'undefined' && opts.jobno) text += ' - ' + opts.jobno;
else text += ' - 无';
if (typeof opts.phoneNoUt != 'undefined' && opts.phoneNoUt) text += ' - ' + opts.phoneNoUt;
else text += ' - 无';
return text + ')';
},
loading: function(){
var loadingDialog = BootstrapDialog.show({
title: '提示',
message: '<div class="tc" style="margin: 10px 0;">正在处理中,请稍后<i class="fa fa-spinner fa-pulse fa-3x fa-fw" style="font-size:14px;"></i></div>',
closable: false
});
return loadingDialog;
},
reloadMapCache: function(mapId){
var mqInfo = {
deviceSn: mapId,
}
$(document).exajax(baseUrl + "deviceConfig/reloadMap", {
data: {res: JSON.stringify(mqInfo)},
success: function (data) {
}, error: {
function () {
}
}
}, true);
},
autoImportFormCreate: function (data) {
if(data) {
var form = $('<form>');
form.attr('id', 'formElement');
form.addClass('form-horizontal');
var tpl = '';
_.each(data, function (item) {
tpl += `<div class="form-group">
<label for="${item.name}" class="col-sm-4 control-label">${item.displayName}:</label>
<div class="col-sm-7">`;
if (item.type == "text") {
tpl += `<input id="${item.name}" name="${item.name}" type="text" value="${typeof item.value != 'undefined' ? item.value : ''}" ${item.disabled ? 'disabled' : ''} class="form-control">`;
} if(item.type == "number") {
tpl += `<input id="${item.name}" name="${item.name}" type="number" min="${typeof item.min != 'undefined' ? item.min : ''}" max="${typeof item.max != 'undefined' ? item.max : ''}" value="${typeof item.value != 'undefined' ? item.value : ''}" ${item.disabled ? 'disabled' : ''} class="form-control">`;
} else if (item.type == "select") {
tpl += `<select id="${item.name}" name="${item.name}" class="form-control">`;
if(item.options) {
_.each(item.options, function (option) {
tpl += `<option value="${option.value}">${option.text}</option>`
})
}
tpl += '</select>';
}
tpl += `</div></div>`;
})
form.append(tpl);
return form;
}
},
// 比较两个数组
compare: function (arr1, arr2) {
return (arr1.length == arr2.length) && arr1.every(function(element, index) {
return element === arr2[index];
})
},
/**
* 元素拖动
* @param oParent 被拖动元素
* @param handle 触发拖动元素
* @param isLeft left 值 boolean
* @param isTop top 值 boolean
* @param lockX width 值 boolean
* @param lockY height 值 boolean
* @param dragMinWidth 最小宽度
* @param dragMinHeight 最小高度
* @param callBack 拖拽完成回调
*/
elementResize: function (opts) {
opts.handle.onmousedown = function (event) {
var event = event || window.event;
var disX = event.clientX - opts.handle.offsetLeft;
var disY = event.clientY - opts.handle.offsetTop;
var iParentTop = opts.oParent.offsetTop;
var iParentLeft = opts.oParent.offsetLeft;
var iParentWidth = opts.oParent.offsetWidth;
var iParentHeight = opts.oParent.offsetHeight;
document.onmousemove = function (event) {
var event = event || window.event;
var iL = event.clientX - disX;
var iT = event.clientY - disY;
var maxW = document.documentElement.clientWidth - opts.oParent.offsetLeft - 2;
var maxH = document.documentElement.clientHeight - opts.oParent.offsetTop - 2;
var iW = opts.isLeft ? iParentWidth - iL : opts.handle.offsetWidth + iL;
var iH = opts.isTop ? iParentHeight - iT : opts.handle.offsetHeight + iT;
opts.isLeft && (opts.oParent.style.left = iParentLeft + iL + "px");
opts.isTop && (opts.oParent.style.top = iParentTop + iT + "px");
iW < opts.dragMinWidth && (iW = opts.dragMinWidth);
iW > maxW && (iW = maxW);
opts.lockX || (opts.oParent.style.width = iW + "px");
iH < opts.dragMinHeight && (iH = opts.dragMinHeight);
if (opts.dragMaxHeight) {
iH > opts.dragMaxHeight && (iH = opts.dragMaxHeight);
} else {
iH > maxH && (iH = maxH);
}
opts.lockY || (opts.oParent.style.height = iH + "px");
if ((opts.isLeft && iW == opts.dragMinWidth) || (opts.isTop && iH == opts.dragMinHeight)) document.onmousemove =
null;
return false;
};
document.onmouseup = function () {
document.onmousemove = null;
document.onmouseup = null;
if (typeof opts.callBack == "function") {
opts.callBack();
}
};
return false;
}
}
}
//table输入页数跳转+返回
function tablePage(tableId) {
//输入制定页数跳转
var preNumber = parseInt(localStorage.preNumber);
if (preNumber != $(tableId).bootstrapTable('getOptions').pageNumber) {
localStorage.preNumber = $(tableId).bootstrapTable('getOptions').pageNumber
}

var sizeNumber = parseInt(localStorage.sizeNumber);
if (sizeNumber != $(tableId).bootstrapTable('getOptions').pageSize) {
localStorage.sizeNumber = $(tableId).bootstrapTable('getOptions').pageNumber
}

$(".numberBtn").on('click', function () {
var number = parseInt($(".numberInput").val());
var numberMax = 1;
if($('.page-last a').length == 1) {
numberMax = parseInt($('.page-last a').text());
}else {
numberMax = parseInt($(".page-number :last").text());
}
if(number > numberMax) {
$(tableId).bootstrapTable('selectPage', numberMax);
}else {
$(tableId).bootstrapTable('selectPage', number);
}

})
$(".preNumberBtn").on('click', function () {
$(tableId).bootstrapTable('selectPage', preNumber);
})
}

/*
* 滚轮改变input值----兼容火狐.chrome.Ie
* 直接传入节点命调用
* */
var EventUtil = {

addHandler: function (element, type, handler) {
if (element.addEventListener) {
element.addEventListener(type, handler, false);
} else if (element.attachEvent) {
element.attachEvent("on" + type, handler);
} else {
element["on" + type] = handler;
}
},

removeHandler: function (element, type, handler) {
if (element.removeEventListener) {
element.removeEventListener(type, handler, false);
} else if (element.detachEvent) {
element.detachEvent("on" + type, handler);
} else {
element["on" + type] = null;
}
},

getEvent: function (event) {
return event ? event : window.event;
},

getTarget: function (event) {
return event.target || event.srcElement;
},

getWheelDelta: function (event) {
if (event.wheelDelta) {
return event.wheelDelta;
} else {
return -event.detail * 40;
}
},

preventDefault: function (event) {
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
}

};

function onWheel(event) {

event = EventUtil.getEvent(event);
var curElem = EventUtil.getTarget(event);
var curVal = parseInt(curElem.value);
var delta = EventUtil.getWheelDelta(event);

if (delta > 0) {
curElem.value = curVal + 1;
} else {
if (curVal == "0") {
return
} else {
curElem.value = curVal - 1;
}

}

EventUtil.preventDefault(event);

}

function slideInput(node) {
$(node).hover(function () {
EventUtil.addHandler(document, 'mousewheel', onWheel);
EventUtil.addHandler(document, 'DOMMouseScroll', onWheel);
},
function () {
EventUtil.removeHandler(document, 'mousewheel', onWheel);
EventUtil.removeHandler(document, 'DOMMouseScroll', onWheel);
});
}

个人tools封装的更多相关文章

  1. 自己封装的js工具

    // 封装函数insertAfter;功能类似insertBefore(); var div = document.getElementsByTagName("div")[0]; ...

  2. 使用微服务架构思想,设计部署OAuth2.0授权认证框架

    1,授权认证与微服务架构 1.1,由不同团队合作引发的授权认证问题 去年的时候,公司开发一款新产品,但人手不够,将B/S系统的Web开发外包,外包团队使用Vue.js框架,调用我们的WebAPI,但是 ...

  3. API代理网关和OAuth2.0授权认证框架

    API代理网关和OAuth2.0授权认证框架 https://www.cnblogs.com/bluedoctor/p/8967951.html 1,授权认证与微服务架构 1.1,由不同团队合作引发的 ...

  4. Open Flash Chart 简介

    http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-ofc/ Open Flash Chart(OFC)是一个开源的 Flash 图表绘 ...

  5. JVM CPU Profiler技术原理及源码深度解析

    研发人员在遇到线上报警或需要优化系统性能时,常常需要分析程序运行行为和性能瓶颈.Profiling技术是一种在应用运行时收集程序相关信息的动态分析手段,常用的JVM Profiler可以从多个方面对程 ...

  6. 自己封装的tools.js文件

    /* * 生成指定范围的随机整数 * @param lower 下限 * @param upper 上限 * @return 返回指定范围的随机整数,上/下限值均可取 */ function rand ...

  7. faster_rcnn c++版本的 caffe 封装,动态库(2)

    摘要: 转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/ github上的代码链接,求给星星:) https:// ...

  8. Android JSON、GSON、FastJson的封装与解析

    声明: 1.本帖只提供代码,不深入讲解原理.如果读者想要深入了解,那就不要在这个帖子上浪费时间了 2.客户端用的是Google官方的Volley访问服务器,具体了解Volley请戳 这里 3.本帖三种 ...

  9. BaseAdapter日常的封装

    我们日常开发中BaseAdapter使用非常的多,大家有没有想过,再进一步封装,将平常使用的对象集合,利用泛型放入集合中,再也不用每次都重写那几个方法了,当然我也提供我的下载地址(https://gi ...

随机推荐

  1. SQL Server 跨服务器 不同数据库之间复制表的数据

    不同数据库之间复制表的数据的方法: 当表目标表存在时: insert into 目的数据库..表 select * from 源数据库..表 当目标表不存在时: select * into 目的数据库 ...

  2. 004PHP文件处理——目录操作:glob rewinddir opendir readdir

    <?php /** * 目录操作:glob rewinddir opendir readdir */ //glob 以数组形式返回,参数1这个目录的所有内容,可以置顶返回的具体类型 //只遍历输 ...

  3. [CSS布局]3列布局:左右两列固定宽度、中间列自适应满宽

    一种常见的3列布局,左右两列固定宽度.中间列自适应满宽.整个网页不出现横向滚动条 纯CSS实现 效果图: 代码: <!DOCTYPE html> <html lang="e ...

  4. 1元抢卡巴KAV_不限量疯抢即日起至2013.10.31截止

    活动地址:http://img.kaba365.com/mail_files/kaba1yuan.html

  5. -webkit新属性 image-set和srcset

    响应式图片的作用: 为使用不同分辨率的不同浏览器用户提供适合其浏览环境的图片大小的解决方案. 之前的解决方法是使用@media 但是-webkit新提出的image-set和srcset同样可以解决问 ...

  6. 外汇EA(LRY_FX_Robot_V5)

    EA介绍 EA类型是马丁+策略,EA主要功能有风控设置(预付款.浮亏.加仓层数等达到多少进行操作).移动止损(包括隐藏移动止损).帮我操作手动单子(如果你开了首仓不会操作这个功能可参帮你加仓平仓移动止 ...

  7. SUSE Linux Enterprise Server设置IP地址、网关、DNS(转载)

      说明: ip:192.168.21.172 子网掩码:255.255.255.0 网关:192.168.21.2 dns:8.8.8.8 8.8.4.4 1.设置ip地址vi /etc/sysco ...

  8. Python数据类型-02.字符串

    本文主要记录字符串的相关知识,包括字符串的定义特点,常用方法和 请知悉: 计算机中,一切皆为对象世界万物,皆为对象,一切对象皆可分类 1.什么是字符串? 类似"hello world&quo ...

  9. Anatoly and Cockroaches

    Anatoly lives in the university dorm as many other students do. As you know, cockroaches are also li ...

  10. 【转】Python 中的 if __name__ == '__main__' 该如何理解

    转自:http://blog.konghy.cn/2017/04/24/python-entry-program/ 程序入口 对于很多编程语言来说,程序都必须要有一个入口,比如 C,C++,以及完全面 ...