博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS常用方法【笔记整理】-持续整理中
阅读量:4598 次
发布时间:2019-06-09

本文共 8585 字,大约阅读时间需要 28 分钟。

 

//记录一下前端开发中 JS常用的方法等,持续收集整理中

----------------------------------------------------------

1 //处理键盘事件 禁止后退键(Backspace)密码或单行、多行文本框除外 2 function banBackSpace(e) { 3     var ev = e || window.event;//获取event对象    4     var obj = ev.target || ev.srcElement;//获取事件源    5     var t = obj.type || obj.getAttribute('type');//获取事件源类型   6     //获取作为判断条件的事件类型 7     var vReadOnly = obj.getAttribute('readonly'); 8     //处理null值情况 9     vReadOnly = (vReadOnly == "") ? false : vReadOnly;10     //当敲Backspace键时,事件源类型为密码或单行、多行文本的,11     //并且readonly属性为true或enabled属性为false的,则退格键失效12     var flag1 = (ev.keyCode == 8 && (t=="password"||t == "text" || t == "textarea")&&vReadOnly=="readonly") ? true : false;13     //当敲Backspace键时,事件源类型非密码或单行、多行文本的,则退格键失效14     var flag2 = (ev.keyCode == 8 && t != "password" && t != "text" && t != "textarea")? true : false;15     //判断16     if (flag2) { }17     if (flag1) {18         return false;19     }20 }
1 //处理低版本IE浏览器不支持indexof方法 2 if (!Array.prototype.indexOf) { 3     Array.prototype.indexOf = function (elt /*, from*/) { 4         var len = this.length >>> 0; 5  6         var from = Number(arguments[1]) || 0; 7         from = (from < 0) 8              ? Math.ceil(from) 9              : Math.floor(from);10         if (from < 0)11             from += len;12 13         for (; from < len; from++) {14             if (from in this &&15                 this[from] === elt)16                 return from;17         }18         return -1;19     };20 }21 22 Array.prototype.lastIndexOf = function (item) {23     var len = this.length;24     for (var i = len; i >= 0; i--) {25         if (this[i] === item) {26             return len - i;27         }28     }29     return -1;30 }
1 // 打开一个新窗体   //参数说明:   //theURL 打开新窗体的URL   //winName 打开新窗体的名称   // Awidth /Aheight 设定打开新窗体的 宽度/高度   //flag 1,2,3,4,5 分别匹配下面5中情况  2 function openWindow(theURL, winName, Awidth, Aheight, flag) { //v2.0 3     var closeZLwindow; 4     switch (flag) { 5         case 1: 6             {  //不能放大缩小,没有滚动条 7                 closeZLwindow = window.open(theURL, winName, 'width=' + Awidth + ',height=' + Aheight + ',left=' + (screen.width - Awidth) / 2 + ',top=' + (screen.height - Aheight) / 2); 8                 break; 9             }10         case 2:11             {  //不能放大缩小,但有滚动条12                 closeZLwindow = window.open(theURL, winName, 'scrollbars=yes,width=' + Awidth + ',height=' + Aheight + ',left=' + (screen.width - Awidth) / 2 + ',top=' + (screen.height - Aheight) / 2);13                 break;14             }15         case 3:16             {  //全屏17                 closeZLwindow = window.open(theURL, winName, 'fullscreen=1,width=' + Awidth + ',height=' + Aheight + ',left=0,top=0');18                 break;19             }20         case 4:21             {22                 closeZLwindow = window.open(theURL, winName, 'width=' + screen.width + ',menubar=yes,status=yes,location=yes,menubar=yes,toolbar=yes,resizable=yes,scrollbars=yes,left=0,top=0,height=' + screen.height);23                 break;24             }25         default:26             {  //可以放大缩小,而且有滚动条27                 closeZLwindow = window.open(theURL, winName, 'resizable=yes, scrollbars=yes,width=' + Awidth + ',height=' + Aheight + ',left=' + (screen.width - Awidth) / 2 + ',top=' + (screen.height - Aheight) / 2);28                 break;29             }30     }31     return closeZLwindow;32 }
1 //检测是否为中文编码 2 function isChineseInString(str) { 3     for (var i = 0; i < str.length; i++) { 4         var ch = str.charCodeAt(i); 5         if (0x4e00 < ch && ch < 0x9fff) { 6             return true;//是中文 7         } 8         else { 9             return false;//非中文10         }11     }12 }
1 //防止SQL注入//输入敏感字符提示2 function AntiSqlValid(oField) {3     re = /select|update|delete|exec|count|’|"|=|;|>|<|%/i;4     if (re.test(oField.value)) {5         alert("请您不要在参数中输入特殊字符和SQL关键字!"); //注意中文乱码6         return false;7     }8 }
1 //四则运算方法 2  3 //除法函数,用来得到精确的除法结果 4 //说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。 5 //调用:accDiv(arg1,arg2) 6 //返回值:arg1除以arg2的精确结果 7 function accDiv(arg1, arg2) { 8     var t1 = 0, t2 = 0, r1, r2; 9     try { t1 = arg1.toString().split(".")[1].length } catch (e) { }10     try { t2 = arg2.toString().split(".")[1].length } catch (e) { }11     with (Math) {12         r1 = Number(arg1.toString().replace(".", ""));13         r2 = Number(arg2.toString().replace(".", ""));14         return (r1 / r2) * pow(10, t2 - t1);15     }16 }17 //给Number类型增加一个div方法,调用起来更加方便。18 Number.prototype.div = function (arg) {19     return accDiv(this, arg);20 };21 //乘法函数,用来得到精确的乘法结果22 //说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。23 //调用:accMul(arg1,arg2)24 //返回值:arg1乘以arg2的精确结果25 function accMul(arg1, arg2) {26     var m = 0, s1 = arg1.toString(), s2 = arg2.toString();27     try { m += s1.split(".")[1].length } catch (e) { }28     try { m += s2.split(".")[1].length } catch (e) { }29     return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);30 }31 //给Number类型增加一个mul方法,调用起来更加方便。32 Number.prototype.mul = function (arg) {33     return accMul(arg, this);34 };35 //加法函数,用来得到精确的加法结果36 //说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。37 //调用:accAdd(arg1,arg2)38 //返回值:arg1加上arg2的精确结果39 function accAdd(arg1, arg2) {40     var r1, r2, m;41     try { r1 = arg1.toString().split(".")[1].length; } catch (e) { r1 = 0; }42     try { r2 = arg2.toString().split(".")[1].length; } catch (e) { r2 = 0; }43     m = Math.pow(10, Math.max(r1, r2));44     return (arg1 * m + arg2 * m) / m;45 }46 //给Number类型增加一个add方法,调用起来更加方便。47 Number.prototype.add = function (arg) {48     return accAdd(arg, this);49 };50 //减法函数51 function accSub(arg1, arg2) {52     var r1, r2, m, n;53     try {54         r1 = arg1.toString().split(".")[1].length;55     } catch (e) {56         r1 = 0;57     }58     try {59         r2 = arg2.toString().split(".")[1].length;60     } catch (e) {61         r2 = 0;62     }63     m = Math.pow(10, Math.max(r1, r2));64     //动态控制精度长度65     n = (r1 >= r2) ? r1 : r2;66     return ((arg2 * m - arg1 * m) / m).toFixed(n);67 }68 ///给number类增加一个sub方法,调用起来更加方便69 Number.prototype.sub = function (arg) {70     return accSub(arg, this);71 };
1 //数字四舍五入到小数点后第几位的方法 2 Number.prototype.toFixed = function (d) { 3     var s = this + ""; if (!d) d = 0; 4     if (s.indexOf(".") == -1) s += "."; s += new Array(d + 1).join("0"); 5     if (new RegExp("^(-|\\+)?(\\d+(\\.\\d{0," + (d + 1) + "})?)\\d*$").test(s)) { 6         s = "0" + RegExp.$2, pm = RegExp.$1, a = RegExp.$3.length, b = true; 7         if (a == d + 2) { 8             a = s.match(/\d/g); if (parseInt(a[a.length - 1]) > 4) { 9                 for (var i = a.length - 2; i >= 0; i--) {10                     a[i] = parseInt(a[i]) + 1;11                     if (a[i] == 10) { a[i] = 0; b = i != 1; } else break;12                 }13             }14             s = a.join("").replace(new RegExp("(\\d+)(\\d{" + d + "})\\d$"), "$1.$2");15         } if (b) s = s.substr(1); return (pm + s).replace(/\.$/, "");16     } return this + "";17 };
1 //* 根据长度截取先使用字符串,超长部分追加… 2 //* str 对象字符串 3 //* len 目标字节长度 4 //* 返回值: 处理结果字符串 5 function cutString(str, len) { 6     //length属性读出来的汉字长度为1 7     if (str.length * 2 <= len) { 8         return str; 9     }10     var strlen = 0;11     var s = "";12     for (var i = 0; i < str.length; i++) {13         s = s + str.charAt(i);14         if (str.charCodeAt(i) > 128) {15             strlen = strlen + 2;16             if (strlen >= len) {17                 return s.substring(0, s.length - 1) + "...";18             }19         } else {20             strlen = strlen + 1;21             if (strlen >= len) {22                 return s.substring(0, s.length - 2) + "...";23             }24         }25     }26     return s;27 }
1 //去掉数组中重复的元素 2 function unique(arr) { 3     var result = [], hash = {}; 4     for (var i = 0, elem; (elem = arr[i]) != null; i++) { 5         if (!hash[elem]) { 6             result.push(elem); 7             hash[elem] = true; 8         } 9     }10     return result;11 }
1 //打开弹出层时禁用滚动条2 function DisableScrollBar() {3     $("body").css({ overflow: "hidden" });4 }5 6 //关闭弹出层时激活滚动条7 function ActivateScrollBar() {8     $("body").css({ overflow: "auto" });9 }
1 //输入框(只能输入整数) 2 function limitNum(e, LimitNumber) { 3     if (e.value.length == 1) { 4         e.value = e.value.replace(/[^0-9]/g, ''); 5     } 6     else { 7         e.value = e.value.replace(/[^\d.]/g, ''); 8     } 9     if (parseInt(e.value) > LimitNumber) { e.value = LimitNumber; }10 }

 

转载于:https://www.cnblogs.com/Hizy/p/6758962.html

你可能感兴趣的文章
Spring的Bean内部方法调用无法使用AOP切面(CacheAble注解失效)
查看>>
分布式事务之深入理解什么是2PC、3PC及TCC协议?
查看>>
Vim插件:Unite新手指导(译)
查看>>
pymysql实现MySQL与Python交互
查看>>
迭代器与生成器
查看>>
从DataTable到List<Model>(C#.net)
查看>>
JavaScript 垃圾回收机制分析
查看>>
CM+CDH安装教程(CentOS)
查看>>
C/C++中extern和static
查看>>
第一阶段linux结束
查看>>
网络流+二分图模板
查看>>
[MQ]关于ActiveMQ的配置
查看>>
tomcat部署Jenkins并配置jdk、maven、git
查看>>
Lintcode: Digit Counts
查看>>
Leetcode: House Robber
查看>>
adb命令
查看>>
矩阵乘法运算
查看>>
Java 日志组件(三)
查看>>
iphone中button按钮显示为圆形解决
查看>>
SharedPreferences.Editor 的apply()与commit()方法的区别
查看>>