\

var Utils =
{
//字符串格式化
StringFormat: function () {
if (arguments.length == 0)
return null;
var str = arguments[0];
for (var i = 1; i < arguments.length; i++) {
var re = new RegExp('\\{' + (i - 1) + '\\}', 'gm');
str = str.replace(re, arguments[i]);
}
return str;
},

// val为经json直接序列化后的C#的DateTime类型的数据
FormatTime: function (val, format) {
if (!val) {
return "";
}

var re = /-?\d+/;
var m = re.exec(val);
var d = new Date(parseInt(m[0]));
// 按【2012-02-13 09:09:09】的格式返回日期

var defaultFormat = "yyyy-MM-dd hh:mm:ss";
if (format && typeof format == "string") {
defaultFormat = format;
}
return d.Format(defaultFormat);
},

//判断是否是有效的日期格式字符串
IsDataString: function (strData) {
/// <summary>
/// 编辑/新增
/// </summary>
/// <param name="strData">需要校验的字符串</param>
/// <returns></returns>

//日期格式正则
var dataFilter = /^([1-9]\d{3}-((0?[1-9])|(1[0-2]))-((0[1-9])|([1-2]?\d)|(3[0-1])))?$/
return dataFilter.test(strData);
},

//判断是否是有效的日期时间格式字符串
IsDataTimeString: function (strDataTime) {
/// <summary>
/// 判断是否是有效的日期时间格式字符串
/// </summary>
/// <param name="strDataTime">需要校验的字符串</param>
/// <returns></returns>

//日期时间格式正则
var timeFilter = /^[1-9][0-9]-(0?[1-9]|1[0|1|2])-(0?[1-9]|[1|2][0-9]|3[0|1])s(0?[1-9]|1[0-9]|2[0-3]):(0?[0-9]|[1|2|3|4|5][0-9]):(0?[0-9]|[1|2|3|4|5][0-9])$/;
return timeFilter.test(strDataTime);
},

/// <summary>
///将时间转换为c#需要的反序列化的格式 (默认处理时区)
/// <summary>
/// <param name="strDateTime">时间</param>
/// <param name="isDoOffset">bool类型,true处理时区,false处理时区</param>
GetDateSerializeString: function (strDateTime,isDoOffset) {
var dataFilter = /^([1-9]\d{3}-((0?[1-9])|(1[0-2]))-((0[1-9])|([1-2]?\d)|(3[0-1])))$/
if (dataFilter.test(strDateTime)) {
strDateTime = strDateTime.replace(/-/g, "/");
var localOffset = new Date().getTimezoneOffset() * 60000;//时区偏差
if (typeof (localOffset) != undefined && isDoOffset == false) {
localOffset = 0;
}
return "\/Date(" + (new Date(strDateTime).valueOf() - localOffset) + ")\/";
}
else {
return null;
}
},

//文字超长省略显示
OverflowFormatter: function (value) {
return "<div class='OverflowFormatter'>" + $.trim(value) + "</div>"
},

//json时间格式转字符串
JsonDateFormatter: function (strJsonTime) {
if (!strJsonTime || strJsonTime == "") {
return "";
}
var date;
//newtonsoft类型
if (strJsonTime.indexOf("T") > 0) {
strJsonTime = strJsonTime.replace("T", " ");
date = new Date(Date.parse(strJsonTime.replace(/-/g, "/")));
}
else if (strJsonTime.indexOf("Date") > 0) {
//微软类型
var re = /-?\d+/;
var m = re.exec(strJsonTime);
date = new Date(parseInt(m[0]));
}
if (date) {
return date.Format("yyyy-MM-dd");
}
else {
return "";
}
},

//配置jqGrid表格根据页面宽度动态适配,两个参数分别为表格id与表格所在父容器的id,通过动态匹配父容器宽度来实现
//第三个参数为宽度偏移值,为了适配不同的页面
SetGridWidthDynamic: function (tableId, parentContainerId, offsetValue) {
if ($.browser.msie && parseInt($.browser.version, 10) < 8) {
return;
}

$(window).resize(function () {
Utils.SetGridWidth(tableId, parentContainerId, offsetValue);
});
},

//手动触发表格的宽度自适应
SetGridWidth: function (tableId, parentContainerId, offsetValue) {
var grid = $(tableId);
if (grid && grid.length == 1) {
var parentWidth = $(parentContainerId).width();
if (parentWidth > 1680) { //避免出现不断拉宽的问题
return;
}
var gridWidth = grid.width();

if (parentWidth > 0 && Math.abs(parentWidth - gridWidth) > 10) {
grid.setGridWidth(parentWidth - offsetValue);
}
}
},

//设置jqGrid表格中Tip提示框
//fromColIndex: 从哪一列开始进行Tip提示,必填
//toColIndex: Tip提示到哪一列截止,非必填,如果不填表示从fromColIndex开始到最后所有的列
//注:序号需要考虑隐藏列,从1开始,同时需要引入tooltip插件
SetCellTipInfo: function (tableId, fromColIndex, toColIndex) {
var tableObj = $("#" + tableId);
if (!tableObj) {
return;
}

toColIndex = (!toColIndex) ? 100 : toColIndex;

tableObj.find("tr").each(function () {
if (!$(this).hasClass("jqgfirstrow")) {
$(this).find("td").each(function (index, item) {
if (index >= fromColIndex && index <= toColIndex) {
if ($(item).find("div").length > 0) {
var oldContent = $(item).find("div").html();
var newContent = Utils.StringFormat("<div class='tipClass' style='max-height:11px;margin:5px 5px;' title='{0}'>{1}</div>", $(item).find("div").attr("title"), $.trim(oldContent));
$(item).empty().html(newContent);
} else {
var oldContent = $(item).html();
var newContent = Utils.StringFormat("<div class='tipClass' style='max-height:11px;margin:5px 5px;' title='{0}'>{1}</div>", $(item).attr("title"), $.trim(oldContent));
$(item).removeAttr("title").empty().html(newContent);
}
}
});
}
});

$(".tipClass").tooltip({ track: true, delay: 0, showURL: false, showBody: " - ", fade: 300 });
},

//设置左侧树的高度与右侧区域相同的高度,offsetHeight为局部调整高度
SetTreeHeight: function (treeId, rightDivId, minHeight, offsetHeight) {
var treeH = $(treeId).height();
var rightH = $(rightDivId).height();

//修改左侧树动态高度逻辑
if (rightH < minHeight) {
treeH = minHeight;
offsetHeight = 0;
}
else {
treeH = rightH;
}

$(treeId).height(treeH - offsetHeight);
},

// 复制对像
Clone: function (myObj) {
if (typeof (myObj) != 'object') { return myObj; }
if (myObj == null) { return myObj; }

var myNewObj = new Object();

for (var i in myObj) {
myNewObj[i] = this.Clone(myObj[i]);
}

return myNewObj;
},

//日志打印
Log: function (msg) {
if (typeof console != undefined) {
var str = Utils.StringFormat("【{0}】{1}", (new Date()).Format("yyyy-MM-dd hh:mm:ss"), msg);
console.log(str);
}
},

HtmlEncode: function (str) {
var s = "";
if (str.length == 0)
return "";
s = str.replace(/&/g, "&amp;");
s = s.replace(/</g, "&lt;");
s = s.replace(/>/g, "&gt;");
s = s.replace(/ /g, "&nbsp;");
s = s.replace(/\'/g, "'");
s = s.replace(/\"/g, "&quot;");
return s;
},

HtmlDecode: function (str) {
var s = "";
if (str.length == 0)
return "";
s = str.replace(/&amp;/g, "&");
s = s.replace(/&lt;/g, "<");
s = s.replace(/&gt;/g, ">");
s = s.replace(/&nbsp;/g, " ");
s = s.replace(/'/g, "\'");
s = s.replace(/&quot;/g, "\"");
return s;
},

// 导出文件
DownloadFile: function (url) {
if (navigator.userAgent.indexOf("MSIE 8.0") > 0 || navigator.userAgent.indexOf("MSIE 7.0") > 0) {
location.href = url;
}
else {
var frame = $("#__ipalDownloadFrame");
if (frame.length == 0) {
frame = $("<iframe id='__ipalDownloadFrame' style='display:none'>");
$("body").append(frame);
}
frame.attr("src", url);
}
},

// str:源中英文字符串 len:要截取的长度
SubString: function (str, len) {
var newLength = 0;
var newStr = "";
var chineseRegex = /[^\x00-\xff]/g;
var singleChar = "";
var strLength = str.replace(chineseRegex, "**").length;
for (var i = 0; i < strLength; i++) {
singleChar = str.charAt(i).toString();
if (singleChar.match(chineseRegex) != null) {
newLength += 2;
}
else {
newLength++;
}
if (newLength > len) {
break;
}
newStr += singleChar;
}

if (strLength > len) {
newStr += "...";
}
return newStr;
},

/*重新选中下拉框中的option项, option对应value*/
SelectOption: function (selectId, option) {
var options = $("#" + selectId).find("option");
if (options.length == 0) {
return;
}

var newOptions = "";
$.each(options, function (index, opt) {
if ($(opt).val() == option) {
newOptions += "<option value='" + $(opt).val() + "' selected='selected'>" + $(opt).text() + "</option>";
}
else {
newOptions += "<option value='" + $(opt).val() + "'>" + $(opt).text() + "</option>";
}
});

$("#" + selectId).empty().html(newOptions);
},

GetJsonFromParams: function (params) {
if (!params) {
return {};
}

var result = new Object();
var str = params;
strs = str.split("&");
for (var i = 0; i < strs.length; i++) {
result[strs[i].split("=")[0]] = decodeURIComponent(strs[i].split("=")[1]);
}

return result;
},

FormValidate: function (selector, settings, custSettings, validCallback) {
var set = {};
if (settings) {
set = settings;
}

var defaultSettings = {
errorClass: "validate-error",
submitHandler: function (form) {
var result = $(form).valid();
if (result == true && validCallback) {
var fp = Utils.GetJsonFromParams($(form).serialize());
validCallback(fp);
}
},
errorPlacement: function (error, element) {
var target = element;
var name = $(element).attr("name");
if (custSettings && custSettings.hasOwnProperty(name) && custSettings[name].error) {
var result = custSettings[name].error($(error).html(), element, "validate-error");
target = result ? result : target;
}

$(target).attr('original-title', $(error).html());
$(target).tipsy({
trigger: "manual",
gravity: "w"
});

$(target).tipsy("show");
},
success: function (error, element) {
var target = element;
var name = $(element).attr("name");
if (custSettings && custSettings.hasOwnProperty(name) && custSettings[name].success) {
var result = custSettings[name].success($(error).html(), element, "validate-error");
target = result ? result : target;
}

$(target).tipsy("hide");
}
};

$.extend(set, defaultSettings);

var validater = $(selector).validate(set);

function _hideTips(selectors) {
var $validateErrorElements = [];
if (arguments.length == 0) {
$validateErrorElements = $(selector).find("[class*='validate-error']");
}
else {
var ids = Array.prototype.slice.call(arguments).join(",");
$validateErrorElements = $(ids);
}

$validateErrorElements.each(function (index, element) {
$(element).removeClass("validate-error");
$(element).tipsy("hide");
});
}

return {
resetForm: function () {
validater.resetForm();
_hideTips();
},
hideTips: function (selector) {
_hideTips.apply(this, arguments);
},
hideAllTips: function () {
_hideTips();
}
};
}

Javascript Utils.js的更多相关文章

  1. vue项目工具文件utils.js javascript常用工具类,javascript常用工具类,util.js

    vue项目工具文件utils.js :https://blog.csdn.net/Ajaxguan/article/details/79924249 javascript常用工具类,util.js : ...

  2. DCloud-JS-MUI-JS:utils.js

    ylbtech-DCloud-JS:utils.js 1. 导航返回返回顶部 1. var oldBack = mui.back; mui.back = function () { mui.back ...

  3. [TypeScript] 建置输出单一JavaScript档案(.js)与Declaration档案(.d.ts)

    [TypeScript] 建置输出单一JavaScript档案(.js)与Declaration档案(.d.ts) 问题情景 开发人员使用Visual Studio来开发TypeScript,可以很方 ...

  4. nodejs自己在项目中使用的一个工具库utils.js文件

    文件内容如下: /** * utils.js */ var crypto = require('crypto'); var url = require('url'); var querystring ...

  5. JavaScript之JS实现动画效果

    在前面的随笔中介绍了如何用DOM技术修改文档的央样式信息,用JavaScript添加样式信息可以节约我们的时间和精力,但总的来说,CSS仍是完成这类任务的最佳工具.但是有一个应用领域是目前的CSS无能 ...

  6. vue-cli脚手架npm相关文件解读(4)utils.js

    系列文章传送门: 1.build/webpack.base.conf.js 2.build/webpack.prod.conf.js 3.build/webpack.dev.conf.js 4.bui ...

  7. 阅读:重新介绍 JavaScript(JS教程)

    这篇文章是记录自己阅读重新介绍 JavaScript(JS 教程)的记录和个人体会 在线调试代码工具:https://codepen.io/pen 引言 分歧根源:名字Javascript和Java有 ...

  8. Javascript : require.js 的使用(例子)

    demo 结构:     config.js require.config({ baseUrl: 'js/lib', paths: { 'jquery' : 'jquery-1.11.1.min', ...

  9. JavaScript(JS)简介

    历史背景介绍 (Brendan Eich)在其Netscape Navigator 2.0产品中开发出一套livescript的脚本语言.Sun和Netscape共同完成.后改名叫Javascript ...

随机推荐

  1. 【Unity3D】iOS 推送实现

    原地址:http://www.iappfan.com/%E3%80%90unity3d%E3%80%91ios-%E6%8E%A8%E9%80%81%E5%AE%9E%E7%8E%B0/ #impor ...

  2. synergy--共享你的键鼠

    synergy用来分享一套键鼠,作用于多台主机.可作用于linux.Windows和mac平台.工作方式是:将一台主机作为服务器端,然后服务器端将会分享自己的键鼠,另一台主机作为客户端连接服务端就可以 ...

  3. POJ 3273

    Monthly Expense Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 12122   Accepted: 4932 ...

  4. ***解决PHP输出多余的空格或换行

    用CI框架写APP后台接口的时候,返回的JSON前面有多余的2哥换行,首先排查的是BOM,结果问题依旧 再就是排查<?php ?> 标签外没有多余的回车.换行,结果发现确实有多余的换行,去 ...

  5. SDUT1281Cup

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1281 题意 : 一个杯子,告诉你底面半径,顶端 ...

  6. Ubuntu环境下利用ant编译nutch2.2.1 & 配置nutch2.2.1

    /×××××××××××××××××××××××××××××××××××××××××/ Author:xxx0624 HomePage:http://www.cnblogs.com/xxx0624/ ...

  7. Java学习笔记之:Java String类

    一.引言 字符串广泛应用在Java编程中,在Java中字符串属于对象,Java提供了String类来创建和操作字符串. 创建字符串最简单的方式如下: String str= "Hello w ...

  8. PCB工艺镀金(电金)和沉金(化金)的区别

    1.镀金和沉金的别名分别是什么?   镀金:硬金,电金(镀金也就是电金) 沉金:软金,化金 (沉金也就是化金) 2.别名的由来:  镀金:通过电镀的方式,使金粒子附着到pcb板上,所以叫电金,因为附着 ...

  9. SQLite数据库的体系结构(翻译自sqlite.org)

    $1 简介    本文档描述了SQLite库的体系结构,这些信息对那些想理解和修改SQLite的内部工作机制的人是有用的.    下图显示了SQLite的主要组成部件及其相互关系,下面的内容将描述每一 ...

  10. C++工具系列博文合集

    http://www.cnblogs.com/itech/category/240779.html