JS常用方法【私房菜-笔记】-持续整理中

//记录一下前端开发中 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 }
时间: 2024-07-30 10:18:43

JS常用方法【私房菜-笔记】-持续整理中的相关文章

鸟哥私房菜笔记-1 (S0_S3)

学新东西,总感觉还是看书来的实在,直接看教程上手太慢且没有目的, 接下来先啃鸟哥这本吧,买的第三版,内容在鸟哥站上都有: 鸟哥的 Linux 私房菜 -- 基础学习篇目录 (繁体) http://cn.linux.vbird.org/linux_basic/linux_basic.php 鸟哥的 Linux 私房菜 -- 基础学习篇目录 (简体) http://cn.linux.vbird.org/linux_basic/linux_basic.php [ 分享 ] 提問的智慧 - 鳥哥的 Li

java学习路线及资源下载,持续整理中

java学习路线及资源下载,持续整理中 学习路线图:http://blog.csdn.net/shenzhq1980/article/details/484703371.java学习经典书籍_基础编程篇下载地址:http://blog.csdn.net/shenzhq1980/article/details/48375543书籍:Java程序设计语言.(美国)阿诺德.清晰版JAVA2核心技术第1卷.基础知识7thJAVA2核心技术卷II:高级特性7th Java语言程序设计-基础篇(原书第8版)

PHP常用函数归类【持续整理中......】

一.PHP基础语法 变量,常量 严格区分大小写,但内置结构或关键字无所谓(echo) 命名:不能以数字,空格,.来开头,但是可以有汉字,eg:$变量="aa"; 可变变量:$a='aa';$$a="bb";则 $aa="bb"; 引用赋值:$a="aa"; $b=&$a; 则改变$a的值,$b也变化.不同:存储结构是分开的,即使unset($a),$b还在(区分C语言) 变量类型:int str array bool

鸟哥私房菜笔记:Iptables:数据包过滤软件

数据包进入流程:规则顺序的重要性 iptables利用的是数据包过滤机制,所以它会分析数据包的包头数据.根据包头数据与定义的规则来决定该数据包是否可以进入主机或者是被丢弃.也就是说,根据数据包的分析资料“比对”预先定义的规则内容,若数据包数据与规则内容相同则进行动作,否则就继续下一条规则的比对.重点在比对与分析顺序. 例子:假设预先定义了10条防火墙规则,当internet来了一个数据包想要进入主机时,防火墙如下图所示对这个数据包进行分析. 数据包过滤的规则操作及分析流程 当一个网络数据包要进入

C++一些基本知识(持续整理中......)

1,C++ 是一种静态类型的语言,在使用变量前,必须先定义其类型.在编译时会做类型检查,在编写c++表达式的时候,编译器会检查表达式中所用的对象类型是不是之前给其定义的类型,或能否转换为之前给其定义的类型.所以,C++ 的这种静态类型检查,能帮助开发者更早的发现错误. 2,左值可以出现在赋值语句的左边和右边. 右值只能出现在赋值语句的右边. 3,变量(即对象)是内存中具有类型的区域.变量是否自动初始化取决于变量定义的位置:函数体外的变量自动初始化为0,函数体内的变量不会自动初始化. 类类型变量(

鸟哥Linux私房菜笔记(三):系统管理

磁盘配额 真正的磁盘配额是读取/etc/mtab,这个文件需要重新启动后才能用/etc/fstab的新数据改写. 例行性命令的建立 仅进行一次用 at命令: at [-m] TIME 其中-m当工作完全用邮件通知用户.at [-m] TIME后会出现at提示符,用户可以执行多个命令. 可利用/etc/at.allow和/etc/at.deny来限制at的使用. atq可查询当前主机at任务,atrm [jobnumber] 可以取消任务. 例行性命令用crontab: crontab  [-u

鸟哥Linux私房菜笔记(一)

第8章 Linux磁盘与文件系统管理 ln  [-sf]  源文件  目标文件 -s:符号连接,如果不加参数就是硬连接 -f:如果目标文件已存在,则先删除,再建立连接 硬连接只是在某个目录下的块多写入一个关联数据,不会用掉inode与磁盘空间.符号连接会生成一个新的inode,也就是生成了一个新的文件, 文件大小就是文件名字符串的长度.因此,删除一个硬连接的源文件,文件仍能正常打开,删除符号连接的源文件,则符号连接的文件无法打开. dd命令: dd  if=input_file  of=outp

鸟哥的linux私房菜笔记(一)

计算机概述 1.计算机接收用户输入指令数据,经过cpu数据与逻辑单元运算处理后,产生或储存成有用的信息--->I/O设备+cpu+处理信息=计算机. 2.计算机五大单元:I/O单元 内存单元 cpu内部控制单元 cpu内部算术逻辑单元 3.cpu中含有指令集->RISC,精简指令集,指令执行时间短性能好->arm系列等. ->CISC,复杂指令集,指令处理任务内容丰富->x86系列等. 4.主板将所有的设备连接在一起,重要的组件是芯片组->Intel系列cpu主板芯片组

程序员书单合集,持续整理中

1.java学习基础编程篇 csdn下载地址:http://blog.csdn.net/shenzhq1980/article/details/48375543 博客园下载地址:http://www.cnblogs.com/shenzhq80/p/4818305.htmlJava程序设计语言.(美国)阿诺德.清晰版 JAVA2核心技术第1卷.基础知识7thJAVA.2核心技术.卷II:高级特性7thJava语言程序设计-基础篇(原书第8版)Java语言程序设计-进阶篇(原书第8版)Java核心技