Utils工具方法集插件详解
var Utils = function(){};
Utils.text = {
stripTags: function (val) {
return val.replace(/<\/?[^>]+>/gi, ""); //正则表达式中的<\/?其实就是匹配</或<,后面的[^>]+其实就是匹配不是>的任何一个或多个字符,因此此正则可以匹配<div>,</div>,<input type="text" />,很明显,此方法是去掉标签的工具方法。
},
decodeHTML: function (val) { //html解码
var s = val;
s = s.replace(/</gi, "<");
s = s.replace(/>/gi, ">");
s = s.replace(/"/gi, "\""); //这里的"\""可以改成'"'
s = s.replace(/ /gi, " ");
s = s.replace(/'/gi, "'");
s = s.replace(/&/gi, "&");
return s;
},
encodeHTML: function (val) {
var s = val;
s = s.replace(/&/g, "&");
s = s.replace(/</g, "<");
s = s.replace(/>/g, ">");
s = s.replace(/\"/g, """);
s = s.replace(/ /g, " ");
s = s.replace(/\'/g, "'");
return s;
},
trim: function (val) {
return val.replace(/(^\s*)|(\s*$)/g, "");
},
len: function (val) { //返回字符串的字节数,中文2个字节,其它1个字节
var len = 0;
for (var i = 0, l = val.length; i < l; i++) {
if (val.charCodeAt(i) > 255) {
len += 2;
} else {
len++;
}
}
return len;
},
lefts: function (val,len, isAddDot) { //从字符串左边开始截取指定的字符数
var str = val;
if (val.length > len) {
str = val.substring(0, len);
if (isAddDot) {
str += "...";
}
}
return str;
},
isNumber: function (val) { //判断字符串是否为纯数字
return (val.search(/^\d+$/g) == 0);
},
inStr: function (val,str, isCase) { //字符串val是否存在于另外一个字符串str中,isCase是否区分大小写
var v = val;
var m = (isCase) ? "" : "i"; //默认情况下,是不区分大小写的
var reg = new RegExp("\\b" + v + "\\b", m); // \b的意思是匹配一个单词边界,也就是指单词和空格间的位置。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。
return reg.test(str);
},
format: function (str) { //格式化这种结构的字符串:"{0} not quals {1}"。举个例子:Util.format("{0} not equals {1}", 5, 6),返回的结果:"5 not equals 6"。
var args = arguments;
var pattern = /{(\d)}/g; //此正则匹配{0},{1}。
return String(str).replace(pattern, function (match, subkey) {
subkey = parseInt(subkey, 10) + 1; //subkey就是匹配的第一个子表达式,这里就是数字
var value = args[subkey];
if(typeof value !== "undefined"){
return value;
}else{
return "";
}
});
}
};
Utils.Number ={
add: function (num, num1) { //两个浮点数相加
var m = 0, r1 = 0, r2 = 0;
var s1 = num.toString(), s2 = num1.toString();
try {
if (s1.indexOf(".") > -1) {
r1 = s1.split(".")[1].length; //小数点后面有多少位
}
} catch (e) {
r1 = 0;
}
try {
if (s2.indexOf(".") > -1) {
r2 = s2.split(".")[1].length;
}
} catch (e) {
r2 = 0;
}
m = Math.pow(10, Math.max(r1, r2)); //取两个浮点数,小数点后面位数最长的值,假如是3,那么m = 1000。
return (num * m + num1 * m) / m;
},
mul: function (num, num1) { //两个浮点数相乘
var m = 0, s1 = num.toString(), s2 = num1.toString();
try {
if (s1.indexOf(".") > -1) {
m += s1.split(".")[1].length; //把两个浮点数的小数点后面的位数相加
}
} catch (e1) {
}
try {
if (s2.indexOf(".") > -1) {
m += s2.split(".")[1].length;
}
} catch (e2) {
}
return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
},
div: function (num, num1) { //两个浮点数相除,num/num1
var t1 = 0, t2 = 0, r1, r2, s1 = num.toString(), s2 = num1.toString();
try {
if (s1.indexOf(".") > -1) {
t1 = s1.split(".")[1].length;
}
}
catch (e1) {
}
try {
if (s2.indexOf(".") > -1) {
t2 = s2.split(".")[1].length;
}
}
catch (e2) {
}
r1 = Number(s1.replace(".", ""));
r2 = Number(s2.replace(".", ""));
return (r1 / r2) * Math.pow(10, t2 - t1);
}
};
Utils.Date = {
dateDiff: function(dt1, dt2 ,interval){ // 两个日期相差多长时间,interval代表时间差类型:D(天),H(时),M(分),S(秒),T(毫秒)
var objInterval = {'D':1000 * 60 * 60 * 24 , 'H':1000 * 60 * 60 , 'M':1000 * 60 , 'S':1000 , 'T':1};
interval = interval.toUpperCase();
try{
return Math.round( (dt2.getTime() - dt1.getTime()) / objInterval[interval] );
}
catch (e)
{
return e.message;
}
}
};
Utils.Url={
query: function (key, url) { //获取url的指定查询参数
url = url || location.href;
var reg = new RegExp('[?&]' + key + '=([^&#]*)'); //获取url上面指定的key值
var match = url.match(reg);
if (match) {
try {
return decodeURIComponent(match[1]); //取到的值需要解码
} catch (e) {
}
}
return "";
},
getUrlQueryParams:function(url){ //获取url的所有查询参数
var params = {};
url = url || location.href;
var regex = /[?&]([\w]+)=([^&#]*)/g; //第一个子表达式匹配key,第二个子表达式匹配value
while( ( results = regex.exec( url ) ) != null ){
params[decodeURIComponent(results[1])]=decodeURIComponent(results[2]);
}
return params;
},
addParameter: function ( url , key, value) { //给url添加查询字符串
url = url || location.href;
if(url.indexOf("#") != -1) {url = url.split("#")[0];var hash = url.split("#")[1];}
if (url.indexOf("?") == -1) url += "?"; //如果没有?,就证明原来的url没有查询字符串,因此加上?
if (url.indexOf(key + "=") == -1) { //如果url之前没有这个key值,就直接把这个查询字符串添加到url后面
return url + '&' + key + "=" + encodeURIComponent(value) + (hash ? hash : "");
} else { //如果url之前有这个key值,那么就替换掉
return url.replace(new RegExp("([?&])" + key + "=[^&]*"), "$1" + key + "=" + encodeURIComponent(value)) + (hash ? hash : "");
}
}
};
Utils.cookie = {
get: function (key) { //获取cookie中的name值
var cookie = document.cookie,cookieName = encodeURIComponent(key) + '=', //首先先获得cookie值
start = cookie.indexOf(cookieName), //再看cookie中是否有key值
value = null;
if (start > -1) {
var cookieEnd = document.cookie.indexOf(';', start);; //cookie中的值都是以";"隔开的,因此取到此值的结束点
if (cookieEnd == -1) { //如果此key值在cookie的最后面,就不会有";"。
cookieEnd = document.cookie.length;
}
value = decodeURIComponent(document.cookie.substring(start + cookieName.length, cookieEnd));
}
return value;
},
set: function (name, value, expires, path, domain, secure) { //设置cookie的值
var text = encodeURIComponent(name) + '=' + encodeURIComponent(value);
if (expires instanceof Date) {
text += ';expires=' + expires.toGMTString();
}
if (path) {
text += ';path=' + path;
}
if (domain) {
text += ';domain=' + domain;
}
if (secure) {
text += ';secure';
}
document.cookie = text;
},
unset: function (name, path, domain, secure) { //删除cookie,其实就是设置它超时
this.set(name, "", new Date(0), path, domain, secure);
}
};
Utils.event ={
preventDefault: function (event) {
if (event.preventDefault) {
event.preventDefault();
}
else {
event.returnValue = false;
}
},
stopPropagation: function (event) {
if (event.stopPropagation) {
event.stopPropagation();
}
else {
event.cancelBubble = true;
}
},
getEvent: function (event) {
var e = event || window.event;
if (e.srcElement) e.target = e.srcElement;
return e;
}
};
加油!
Utils工具方法集插件详解的更多相关文章
- Maven系列第6篇:生命周期和插件详解,此篇看过之后在maven的理解上可以超越同级别90%的人!
maven系列目标:从入门开始开始掌握一个高级开发所需要的maven技能. 这是maven系列第6篇. 整个maven系列的内容前后是有依赖的,如果之前没有接触过maven,建议从第一篇看起,本文尾部 ...
- ThreeJS系列1_CinematicCameraJS插件详解
ThreeJS系列1_CinematicCameraJS插件详解 接着上篇 ThreeJS系列1_CinematicCameraJS插件介绍 看属性的来龙去脉 看方法作用 通过调整属性查看效果 总结 ...
- Uploadify 上传文件插件详解
Uploadify 上传文件插件详解 Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示.不过官方提供的实例时php版本的,本文将详细介绍Uploadify在Aspnet中 ...
- .NET Excel导出方法及其常见问题详解
摘要:.NET Excel导出方法及其常见问题详解. 一.Excel导出的实现方法 在.net 程序开发中,对于Excel文件的导出我们一共有三种导出方式: 利用文件输出流进行读写操作 这种方式的导出 ...
- cloudemanager安装时出现failed to receive heartbeat from agent问题解决方法(图文详解)
不多说,直接上干货! 安装cdh5到最后报如下错误: 安装失败,无法接受agent发出的检测信号. 确保主机名称正确 确保端口7182可在cloudera manager server上访问(检查防火 ...
- Linux网络状态工具ss命令使用详解【转】
ss命令用于显示socket状态. 他可以显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix dom ...
- Google自写插件详解
谷歌插件详解,跳转至个人主页查看. GoogleExtension
- (转)Linux网络状态工具ss命令使用详解
Linux网络状态工具ss命令使用详解 原文:http://www.landui.com/help/show-5991.html ss 是 socket statistics 的缩写.顾名思义,ss ...
- cloudemanager安装时出现8475 MainThread agent ERROR Heartbeating to 192.168.30.1:7182 failed问题解决方法(图文详解)
不多说,直接上干货! 问题详情 解决这个问题简单的,是因为有进程占用了.比如 # ps aux | grep super root ? Ss : : /opt/cm-/lib64/cmf/agen ...
随机推荐
- linux 同步IO: sync、fsync与fdatasync
[linux 同步IO: sync.fsync与fdatasync] 传统的UNIX实现在内核中设有缓冲区高速缓存或页面高速缓存,大多数磁盘I/O都通过缓冲进行.当将数据写入文件时,内核通常先将该数据 ...
- springmvc web.xml配置之 -- SpringMVC IOC容器初始化
SpringMVC IOC容器初始化 首先强调一下SpringMVC IOC容器初始化有些特别,在SpringMVC中除了生成一个全局的spring Ioc容器外,还会为DispatcherServl ...
- 使用透明flash+背景图片制作绚丽页面
关键代码: <div style="width: 469px; height: 303px; background-image: url('https://images0.cnblog ...
- 搭建github博客,hexo主题
买个域名,多少钱的都有,看自己喜欢,可以去万网,ali嘛. 一般在windows,下载gitbash(配置公钥,全局用户名和email),node.js(不用配置). 新建github项目,添加公钥( ...
- memcached的常用命令
memcached 常用命令及使用说明 1.启动Memcache 常用参数 -p <num> 设置TCP端口号(默认设置为: 11211) -U <num> UDP监听端口 ...
- 单词搜索 II · Word Search II
[抄题]: 给出一个由小写字母组成的矩阵和一个字典.找出所有同时在字典和矩阵中出现的单词.一个单词可以从矩阵中的任意位置开始,可以向左/右/上/下四个相邻方向移动. 给出矩阵: doafagaidca ...
- select获取下拉框的值 下拉框默认选中
本文主要介绍select下拉框的相关方法. 1.通过id获取下拉框的value和文本值 例如: <select class="form-control" id=" ...
- Java程序设计11——GUI设计与事件处理B
4 Java事件模型的流程 为了使图形界面能够接收用户的操作,必须给各个组件加上事件处理机制. 在事件处理的过程中,主要涉及3类对象: 1.Event Source(事件源):事件发生的场所,通常就是 ...
- [转]Android Parcelable和Serializable的区别
本文主要介绍Parcelable和Serializable的作用.效率.区别及选择,关于Serializable的介绍见Java 序列化的高级认识. 1.作用 Serializable的作用是为了保存 ...
- 关于Safari浏览器使用的几点总结
声明:下载的是Safari英文版本,在Windows操作系统下使用. 一.Safari浏览器中的开发者调试工具隐藏得比较深,找了好久才找到的,方法:按一下键盘上的alt键,浏览器上方就会弹出一个开发者 ...