项目中常用js方法整理common.js

抽空把项目中常用js方法整理成了common.js,都是网上搜集而来的,大家一起分享吧。

 

[javascript] view plain copy
 
 print?在CODE上查看代码片派生到我的代码片
  1. var h = {};  
  2. h.get = function (url, data, ok, error) {  
  3.     $.ajax({  
  4.         url: url,  
  5.         data: data,  
  6.         dataType: 'json',  
  7.         success: ok,  
  8.         error: error  
  9.     });  
  10. }  
  11. h.post = function (url, data, ok, error) {  
  12.     $.ajax({  
  13.         url: url,  
  14.         data: data,  
  15.         type: 'post',  
  16.         dataType: 'json',  
  17.         success: ok,  
  18.         error: error  
  19.     });  
  20. }  
  21. //获取url参数  
  22. h.url = function (url) {  
  23.     if (!url) {  
  24.         url = location.search.substring(1);  
  25.     } else {  
  26.         url = url.substr(url.indexOf('?') + 1);  
  27.     }  
  28.     var args = new Object();   // 声明并初始化一个 "类"  
  29.     // 获得地址(URL)"?"后面的字符串.  
  30.     var query = decodeURI(url);  
  31.     var pairs = query.split("&");  // 分割URL(别忘了'&'是用来连接下一个参数)  
  32.     for (var i = 0; i < pairs.length; i++) {  
  33.         var pos = pairs[i].indexOf('=');  
  34.         if (pos == -1) continue; // 它在找有等号的 数组[i]  
  35.         var argname = pairs[i].substring(0, pos); // 参数名字  
  36.         var value = pairs[i].substring(pos + 1);  // 参数值  
  37.         // 以键值对的形式存放到"args"对象中  
  38.         args[argname] = decodeURI(value);  
  39.     }  
  40.     return args;  
  41. }  
  42.   
  43. // 返回字符串的实际长度, 一个汉字算2个长度   
  44. String.prototype.strlen = function () {  
  45.     return this.replace(/[^\x00-\xff]/g, "**").length;  
  46. }  
  47. //字符串超出省略  
  48. String.prototype.cutstr = function (len) {  
  49.     var restr = this;  
  50.     var wlength = this.replace(/[^\x00-\xff]/g, "**").length;  
  51.     if (wlength > len) {  
  52.         for (var k = len / 2; k < this.length; k++) {  
  53.             if (this.substr(0, k).replace(/[^\x00-\xff]/g, "**").length >= len) {  
  54.                 restr = this.substr(0, k) + "...";  
  55.                 break;  
  56.             }  
  57.         }  
  58.     }  
  59.     return restr;  
  60. }  
  61. //替换全部  
  62. String.prototype.replaceAll = function (s1, s2) {  
  63.     return this.replace(new RegExp(s1, "gm"), s2)  
  64. }  
  65. //字符串去空格  
  66. String.prototype.trim = function () {  
  67.     return this.replace(/(^\s*)|(\s*$)/g, "");  
  68. }  
  69. String.prototype.trimAll = function () {  
  70.     return this.replace(/\s+/g, "");  
  71. }  
  72. String.prototype.lTrim = function () {  
  73.     return this.replace(/(^\s*)/g, "");  
  74. }  
  75. String.prototype.rTrim = function () {  
  76.     return this.replace(/(\s*$)/g, "");  
  77. }  
  78. //判断是否以某个字符串开头  
  79. String.prototype.startWith = function (s) {  
  80.     return this.indexOf(s) == 0  
  81. }  
  82. //判断是否以某个字符串结束  
  83. String.prototype.endWith = function (s) {  
  84.     var d = this.length - s.length;  
  85.     return (d >= 0 && this.lastIndexOf(s) == d)  
  86. }  
  87.   
  88. //删除数组中存在重复的元素  
  89. function getUnique(someArray) {  
  90.     tempArray = someArray.slice(0); //复制数组到临时数组  
  91.     for (var i = 0; i < tempArray.length; i++) {  
  92.         for (var j = i + 1; j < tempArray.length;) {  
  93.             if (tempArray[j] == tempArray[i])  
  94.                 //后面的元素若和待比较的相同,则删除并计数;  
  95.                 //删除后,后面的元素会自动提前,所以指针j不移动  
  96.             {  
  97.                 tempArray.splice(j, 1);  
  98.             }  
  99.             else {  
  100.                 j++;  
  101.             }  
  102.             //不同,则指针移动  
  103.         }  
  104.     }  
  105.     return tempArray;  
  106. }  
  107. //判断数组中是否存在重复的元素  
  108. function confirmRepeat(someArray) {  
  109.     tempArray = someArray.slice(0); //复制数组到临时数组  
  110.     for (var i = 0; i < tempArray.length; i++) {  
  111.         for (var j = i + 1; j < tempArray.length;) {  
  112.             if (tempArray[j] == tempArray[i])  
  113.                 //后面的元素若和待比较的相同,则删除并计数;  
  114.                 //删除后,后面的元素会自动提前,所以指针j不移动  
  115.             {  
  116.                 return true;  
  117.             }  
  118.             else {  
  119.                 j++;  
  120.             }  
  121.             //不同,则指针移动  
  122.         }  
  123.     }  
  124.     return false;  
  125. }  
  126.   
  127. //判断某个值是否在数组中  
  128. Array.prototype.in_array = function (e) {  
  129.     for (i = 0; i < this.length; i++) {  
  130.         if (this[i] == e)  
  131.             return true;  
  132.     }  
  133.     return false;  
  134. }  
  135. //判断某个值在数组中的位置  
  136. Array.prototype.indexOf = function (e) {  
  137.     for (i = 0; i < this.length; i++) {  
  138.         if (this[i] == e)  
  139.             return i;  
  140.     }  
  141.     return -1;  
  142. }  
  143.   
  144. //转义html标签  
  145. function HtmlEncode(text) {  
  146.     return text.replace(/&/g, '&').replace(/\"/g, '"').replace(/</g, '<').replace(/>/g, '>')  
  147. }  
  148.   
  149. //格式化日期 DateFormat('yyyy_MM_dd hh:mm:ss:SS 星期w 第q季度')  
  150. function DateFormat(format, date) {  
  151.     if (!date) {  
  152.         date = new Date();  
  153.     }  
  154.     var Week = ['日', '一', '二', '三', '四', '五', '六'];  
  155.     var o = {  
  156.         "y+": date.getYear(), //year  
  157.         "M+": date.getMonth() + 1, //month   
  158.         "d+": date.getDate(), //day   
  159.         "h+": date.getHours(), //hour   
  160.         "H+": date.getHours(), //hour  
  161.         "m+": date.getMinutes(), //minute   
  162.         "s+": date.getSeconds(), //second   
  163.         "q+": Math.floor((date.getMonth() + 3) / 3), //quarter   
  164.         "S": date.getMilliseconds(), //millisecond   
  165.         "w": Week[date.getDay()]  
  166.     }  
  167.     if (/(y+)/.test(format)) {  
  168.         format = format.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));  
  169.     }  
  170.     for (var k in o) {  
  171.         if (new RegExp("(" + k + ")").test(format)) {  
  172.             format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));  
  173.         }  
  174.     }  
  175.     return format;  
  176. }  
  177.   
  178. //设置cookie值  
  179. function setCookie(name, value, Hours) {  
  180.     var d = new Date();  
  181.     var offset = 8;  
  182.     var utc = d.getTime() + (d.getTimezoneOffset() * 60000);  
  183.     var nd = utc + (3600000 * offset);  
  184.     var exp = new Date(nd);  
  185.     exp.setTime(exp.getTime() + Hours * 60 * 60 * 1000);  
  186.     document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString() + ";domain=360doc.com;"  
  187. }  
  188. //获取cookie值  
  189. function getCookie(name) {  
  190.     var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));  
  191.     if (arr != null) return unescape(arr[2]);  
  192.     return null  
  193. }  
  194.   
  195. //加入收藏夹  
  196. function AddFavorite(sURL, sTitle) {  
  197.     try {  
  198.         window.external.addFavorite(sURL, sTitle)  
  199.     } catch (e) {  
  200.         try {  
  201.             window.sidebar.addPanel(sTitle, sURL, "")  
  202.         } catch (e) {  
  203.             alert("加入收藏失败,请使用Ctrl+D进行添加")  
  204.         }  
  205.     }  
  206. }  
  207. //设为首页  
  208. function setHomepage(homeurl) {  
  209.     if (document.all) {  
  210.         document.body.style.behavior = 'url(#default#homepage)';  
  211.         document.body.setHomePage(homeurl)  
  212.     } else if (window.sidebar) {  
  213.         if (window.netscape) {  
  214.             try {  
  215.                 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")  
  216.             } catch (e) {  
  217.                 alert("该操作被浏览器拒绝,如果想启用该功能,请在地址栏内输入about:config,然后将项 signed.applets.codebase_principal_support 值该为true");  
  218.             }  
  219.         }  
  220.         var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);  
  221.         prefs.setCharPref('browser.startup.homepage', homeurl)  
  222.     }  
  223. }  
  224.   
  225. //跨浏览器绑定事件  
  226. function addEventSamp(obj, evt, fn) {  
  227.     if (!oTarget) { return; }  
  228.     if (obj.addEventListener) {  
  229.         obj.addEventListener(evt, fn, false);  
  230.     } else if (obj.attachEvent) {  
  231.         obj.attachEvent('on' + evt, fn);  
  232.     } else {  
  233.         oTarget["on" + sEvtType] = fn;  
  234.     }  
  235. }  
  236. //跨浏览器删除事件  
  237. function delEvt(obj, evt, fn) {  
  238.     if (!obj) { return; }  
  239.     if (obj.addEventListener) {  
  240.         obj.addEventListener(evt, fn, false);  
  241.     } else if (oTarget.attachEvent) {  
  242.         obj.attachEvent("on" + evt, fn);  
  243.     } else {  
  244.         obj["on" + evt] = fn;  
  245.     }  
  246. }  
  247.   
  248. //判断是否移动设备访问  
  249. function isMobileUserAgent() {  
  250.     return (/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase()));  
  251. }  
  252.   
  253. //完美判断是否为网址  
  254. function IsURL(strUrl) {  
  255.     var regular = /^\b(((https?|ftp):\/\/)?[-a-z0-9]+(\.[-a-z0-9]+)*\.(?:com|edu|gov|int|mil|net|org|biz|info|name|museum|asia|coop|aero|[a-z][a-z]|((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d))\b(\/[-a-z0-9_:\@&?=+,.!\/~%\$]*)?)$/i  
  256.     if (regular.test(strUrl)) {  
  257.         return true;  
  258.     } else {  
  259.         return false;  
  260.     }  
  261. }  
  262.   
  263. //获取页面高度  
  264. function getPageHeight() {  
  265.     var g = document, a = g.body, f = g.documentElement, d = g.compatMode == "BackCompat" ? a : g.documentElement;  
  266.     return Math.max(f.scrollHeight, a.scrollHeight, d.clientHeight);  
  267. }  
  268. //获取页面宽度  
  269. function getPageWidth() {  
  270.     var g = document, a = g.body, f = g.documentElement, d = g.compatMode == "BackCompat" ? a : g.documentElement;  
  271.     return Math.max(f.scrollWidth, a.scrollWidth, d.clientWidth);  
  272. }  
  273.   
  274. //获取页面可视宽度  
  275. function getPageViewWidth() {  
  276.     var d = document, a = d.compatMode == "BackCompat"  
  277.                     ? d.body  
  278.                     : d.documentElement;  
  279.     return a.clientWidth;  
  280. }  
  281. //获取页面可视高度  
  282. function getPageViewHeight() {  
  283.     var d = document, a = d.compatMode == "BackCompat"  
  284.                     ? d.body  
  285.                     : d.documentElement;  
  286.     return a.clientHeight;  
  287. }  
  288.   
  289. //获取页面scrollLeft  
  290. function getPageScrollLeft() {  
  291.     var a = document;  
  292.     return a.documentElement.scrollLeft || a.body.scrollLeft;  
  293. }  
  294. //获取页面scrollTop  
  295. function getPageScrollTop() {  
  296.     var a = document;  
  297.     return a.documentElement.scrollTop || a.body.scrollTop;  
  298. }  
  299. //获取窗体可见范围的宽与高  
  300. function getViewSize() {  
  301.     var de = document.documentElement;  
  302.     var db = document.body;  
  303.     var viewW = de.clientWidth == 0 ? db.clientWidth : de.clientWidth;  
  304.     var viewH = de.clientHeight == 0 ? db.clientHeight : de.clientHeight;  
  305.     return Array(viewW, viewH);  
  306. }  
  307. //随机数时间戳  
  308. function uniqueId() {  
  309.     var a = Math.random, b = parseInt;  
  310.     return Number(new Date()).toString() + b(10 * a()) + b(10 * a()) + b(10 * a());  
  311. }  
  312.   
  313. //获取网页被卷去的位置  
  314. function getScrollXY() {  
  315.     return document.body.scrollTop ? {  
  316.         x: document.body.scrollLeft,  
  317.         y: document.body.scrollTop  
  318.     } : {  
  319.         x: document.documentElement.scrollLeft,  
  320.         y: document.documentElement.scrollTop  
  321.     }  
  322. }  
  323.   
  324. //匹配国内电话号码(0511-4405222 或 021-87888822)   
  325. function istell(str) {  
  326.     var result = str.match(/\d{3}-\d{8}|\d{4}-\d{7}/);  
  327.     if (result == null) return false;  
  328.     return true;  
  329. }  
  330. //匹配身份证(15位或18位)   
  331. function isidcard(str) {  
  332.     var result = str.match(/\d{15}|\d{18}/);  
  333.     if (result == null) return false;  
  334.     return true;  
  335. }  
  336. //移动电话  
  337. function checkMobile(str) {  
  338.     if (!(/^1[3|5|8][0-9]\d{4,8}$/.test(str))) {  
  339.         return false;  
  340.     }  
  341.     return true;  
  342. }  
  343. // 判断输入是否是一个由 0-9 / A-Z / a-z 组成的字符串   
  344. function isalphanumber(str) {  
  345.     var result = str.match(/^[a-zA-Z0-9]+$/);  
  346.     if (result == null) return false;  
  347.     return true;  
  348. }  
  349. // 判断输入是否是有效的电子邮件   
  350. function isemail(str) {  
  351.     var result = str.match(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/);  
  352.     if (result == null) return false;  
  353.     return true;  
  354. }  
  355.   
  356. //金额大写转换函数 transform('123431233132.23')  
  357. function transform(tranvalue) {  
  358.     try {  
  359.         var i = 1;  
  360.         var dw2 = new Array("", "万", "亿"); //大单位  
  361.         var dw1 = new Array("拾", "佰", "仟"); //小单位  
  362.         var dw = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); //整数部分用  
  363.         //以下是小写转换成大写显示在合计大写的文本框中       
  364.         //分离整数与小数  
  365.         var source = splits(tranvalue);  
  366.         var num = source[0];  
  367.         var dig = source[1];  
  368.         //转换整数部分  
  369.         var k1 = 0; //计小单位  
  370.         var k2 = 0; //计大单位  
  371.         var sum = 0;  
  372.         var str = "";  
  373.         var len = source[0].length; //整数的长度  
  374.         for (i = 1; i <= len; i++) {  
  375.             var n = source[0].charAt(len - i); //取得某个位数上的数字  
  376.             var bn = 0;  
  377.             if (len - i - 1 >= 0) {  
  378.                 bn = source[0].charAt(len - i - 1); //取得某个位数前一位上的数字  
  379.             }  
  380.             sum = sum + Number(n);  
  381.             if (sum != 0) {  
  382.                 str = dw[Number(n)].concat(str); //取得该数字对应的大写数字,并插入到str字符串的前面  
  383.                 if (n == '0') sum = 0;  
  384.             }  
  385.             if (len - i - 1 >= 0) { //在数字范围内  
  386.                 if (k1 != 3) { //加小单位  
  387.                     if (bn != 0) {  
  388.                         str = dw1[k1].concat(str);  
  389.                     }  
  390.                     k1++;  
  391.                 } else { //不加小单位,加大单位  
  392.                     k1 = 0;  
  393.                     var temp = str.charAt(0);  
  394.                     if (temp == "万" || temp == "亿") //若大单位前没有数字则舍去大单位  
  395.                         str = str.substr(1, str.length - 1);  
  396.                     str = dw2[k2].concat(str);  
  397.                     sum = 0;  
  398.                 }  
  399.             }  
  400.             if (k1 == 3) { //小单位到千则大单位进一  
  401.                 k2++;  
  402.             }  
  403.         }  
  404.         //转换小数部分  
  405.         var strdig = "";  
  406.         if (dig != "") {  
  407.             var n = dig.charAt(0);  
  408.             if (n != 0) {  
  409.                 strdig += dw[Number(n)] + "角"; //加数字  
  410.             }  
  411.             var n = dig.charAt(1);  
  412.             if (n != 0) {  
  413.                 strdig += dw[Number(n)] + "分"; //加数字  
  414.             }  
  415.         }  
  416.         str += "元" + strdig;  
  417.     } catch (e) {  
  418.         return "0元";  
  419.     }  
  420.     return str;  
  421. }  
  422. //拆分整数与小数  
  423. function splits(tranvalue) {  
  424.     var value = new Array('', '');  
  425.     temp = tranvalue.split(".");  
  426.     for (var i = 0; i < temp.length; i++) {  
  427.         value = temp;  
  428.     }  
  429.     return value;  
  430. }  
  431.   
  432. //格式化数字  
  433. function number_format(number, decimals, dec_point, thousands_sep) {  
  434.     /* 
  435.     * 参数说明: 
  436.     * number:要格式化的数字 
  437.     * decimals:保留几位小数 
  438.     * dec_point:小数点符号 
  439.     * thousands_sep:千分位符号 
  440.     * */  
  441.     number = (number + '').replace(/[^0-9+-Ee.]/g, '');  
  442.     var n = !isFinite(+number) ? 0 : +number,  
  443.         prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),  
  444.         sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,  
  445.         dec = (typeof dec_point === 'undefined') ? '.' : dec_point,  
  446.         s = '',  
  447.         toFixedFix = function (n, prec) {  
  448.             var k = Math.pow(10, prec);  
  449.             return '' + Math.ceil(n * k) / k;  
  450.         };  
  451.   
  452.     s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');  
  453.     var re = /(-?\d+)(\d{3})/;  
  454.     while (re.test(s[0])) {  
  455.         s[0] = s[0].replace(re, "$1" + sep + "$2");  
  456.     }  
  457.   
  458.     if ((s[1] || '').length < prec) {  
  459.         s[1] = s[1] || '';  
  460.         s[1] += new Array(prec - s[1].length + 1).join('0');  
  461.     }  
  462.     return s.join(dec);  
posted @ 2016-05-09 17:47  susanws  阅读(229)  评论(0编辑  收藏  举报