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

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

 //处理键盘事件 禁止后退键(Backspace)密码或单行、多行文本框除外
function banBackSpace(e) {
var ev = e || window.event;//获取event对象
var obj = ev.target || ev.srcElement;//获取事件源
var t = obj.type || obj.getAttribute('type');//获取事件源类型
//获取作为判断条件的事件类型
var vReadOnly = obj.getAttribute('readonly');
//处理null值情况
vReadOnly = (vReadOnly == "") ? false : vReadOnly;
//当敲Backspace键时,事件源类型为密码或单行、多行文本的,
//并且readonly属性为true或enabled属性为false的,则退格键失效
var flag1 = (ev.keyCode == 8 && (t=="password"||t == "text" || t == "textarea")&&vReadOnly=="readonly") ? true : false;
//当敲Backspace键时,事件源类型非密码或单行、多行文本的,则退格键失效
var flag2 = (ev.keyCode == 8 && t != "password" && t != "text" && t != "textarea")? true : false;
//判断
if (flag2) { }
if (flag1) {
return false;
}
}
 //处理低版本IE浏览器不支持indexof方法
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function (elt /*, from*/) {
var len = this.length >>> 0; var from = Number(arguments[1]) || 0;
from = (from < 0)
? Math.ceil(from)
: Math.floor(from);
if (from < 0)
from += len; for (; from < len; from++) {
if (from in this &&
this[from] === elt)
return from;
}
return -1;
};
} Array.prototype.lastIndexOf = function (item) {
var len = this.length;
for (var i = len; i >= 0; i--) {
if (this[i] === item) {
return len - i;
}
}
return -1;
}
 // 打开一个新窗体
  //参数说明:
  //theURL 打开新窗体的URL
  //winName 打开新窗体的名称
  // Awidth /Aheight 设定打开新窗体的 宽度/高度
  //flag 1,2,3,4,5 分别匹配下面5中情况
function openWindow(theURL, winName, Awidth, Aheight, flag) { //v2.0
var closeZLwindow;
switch (flag) {
case 1:
{ //不能放大缩小,没有滚动条
closeZLwindow = window.open(theURL, winName, 'width=' + Awidth + ',height=' + Aheight + ',left=' + (screen.width - Awidth) / 2 + ',top=' + (screen.height - Aheight) / 2);
break;
}
case 2:
{ //不能放大缩小,但有滚动条
closeZLwindow = window.open(theURL, winName, 'scrollbars=yes,width=' + Awidth + ',height=' + Aheight + ',left=' + (screen.width - Awidth) / 2 + ',top=' + (screen.height - Aheight) / 2);
break;
}
case 3:
{ //全屏
closeZLwindow = window.open(theURL, winName, 'fullscreen=1,width=' + Awidth + ',height=' + Aheight + ',left=0,top=0');
break;
}
case 4:
{
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);
break;
}
default:
{ //可以放大缩小,而且有滚动条
closeZLwindow = window.open(theURL, winName, 'resizable=yes, scrollbars=yes,width=' + Awidth + ',height=' + Aheight + ',left=' + (screen.width - Awidth) / 2 + ',top=' + (screen.height - Aheight) / 2);
break;
}
}
return closeZLwindow;
}
 //检测是否为中文编码
function isChineseInString(str) {
for (var i = 0; i < str.length; i++) {
var ch = str.charCodeAt(i);
if (0x4e00 < ch && ch < 0x9fff) {
return true;//是中文
}
else {
return false;//非中文
}
}
}
 //防止SQL注入//输入敏感字符提示
function AntiSqlValid(oField) {
re = /select|update|delete|exec|count|’|"|=|;|>|<|%/i;
if (re.test(oField.value)) {
alert("请您不要在参数中输入特殊字符和SQL关键字!"); //注意中文乱码
return false;
}
}
 //四则运算方法

 //除法函数,用来得到精确的除法结果
//说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
//调用:accDiv(arg1,arg2)
//返回值:arg1除以arg2的精确结果
function accDiv(arg1, arg2) {
var t1 = 0, t2 = 0, r1, r2;
try { t1 = arg1.toString().split(".")[1].length } catch (e) { }
try { t2 = arg2.toString().split(".")[1].length } catch (e) { }
with (Math) {
r1 = Number(arg1.toString().replace(".", ""));
r2 = Number(arg2.toString().replace(".", ""));
return (r1 / r2) * pow(10, t2 - t1);
}
}
//给Number类型增加一个div方法,调用起来更加方便。
Number.prototype.div = function (arg) {
return accDiv(this, arg);
};
//乘法函数,用来得到精确的乘法结果
//说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
//调用:accMul(arg1,arg2)
//返回值:arg1乘以arg2的精确结果
function accMul(arg1, arg2) {
var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
try { m += s1.split(".")[1].length } catch (e) { }
try { m += s2.split(".")[1].length } catch (e) { }
return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
}
//给Number类型增加一个mul方法,调用起来更加方便。
Number.prototype.mul = function (arg) {
return accMul(arg, this);
};
//加法函数,用来得到精确的加法结果
//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
//调用:accAdd(arg1,arg2)
//返回值:arg1加上arg2的精确结果
function accAdd(arg1, arg2) {
var r1, r2, m;
try { r1 = arg1.toString().split(".")[1].length; } catch (e) { r1 = 0; }
try { r2 = arg2.toString().split(".")[1].length; } catch (e) { r2 = 0; }
m = Math.pow(10, Math.max(r1, r2));
return (arg1 * m + arg2 * m) / m;
}
//给Number类型增加一个add方法,调用起来更加方便。
Number.prototype.add = function (arg) {
return accAdd(arg, this);
};
//减法函数
function accSub(arg1, arg2) {
var r1, r2, m, n;
try {
r1 = arg1.toString().split(".")[1].length;
} catch (e) {
r1 = 0;
}
try {
r2 = arg2.toString().split(".")[1].length;
} catch (e) {
r2 = 0;
}
m = Math.pow(10, Math.max(r1, r2));
//动态控制精度长度
n = (r1 >= r2) ? r1 : r2;
return ((arg2 * m - arg1 * m) / m).toFixed(n);
}
///给number类增加一个sub方法,调用起来更加方便
Number.prototype.sub = function (arg) {
return accSub(arg, this);
};
 //数字四舍五入到小数点后第几位的方法
Number.prototype.toFixed = function (d) {
var s = this + ""; if (!d) d = 0;
if (s.indexOf(".") == -1) s += "."; s += new Array(d + 1).join("0");
if (new RegExp("^(-|\\+)?(\\d+(\\.\\d{0," + (d + 1) + "})?)\\d*$").test(s)) {
s = "0" + RegExp.$2, pm = RegExp.$1, a = RegExp.$3.length, b = true;
if (a == d + 2) {
a = s.match(/\d/g); if (parseInt(a[a.length - 1]) > 4) {
for (var i = a.length - 2; i >= 0; i--) {
a[i] = parseInt(a[i]) + 1;
if (a[i] == 10) { a[i] = 0; b = i != 1; } else break;
}
}
s = a.join("").replace(new RegExp("(\\d+)(\\d{" + d + "})\\d$"), "$1.$2");
} if (b) s = s.substr(1); return (pm + s).replace(/\.$/, "");
} return this + "";
};
 //* 根据长度截取先使用字符串,超长部分追加…
//* str 对象字符串
//* len 目标字节长度
//* 返回值: 处理结果字符串
function cutString(str, len) {
//length属性读出来的汉字长度为1
if (str.length * 2 <= len) {
return str;
}
var strlen = 0;
var s = "";
for (var i = 0; i < str.length; i++) {
s = s + str.charAt(i);
if (str.charCodeAt(i) > 128) {
strlen = strlen + 2;
if (strlen >= len) {
return s.substring(0, s.length - 1) + "...";
}
} else {
strlen = strlen + 1;
if (strlen >= len) {
return s.substring(0, s.length - 2) + "...";
}
}
}
return s;
}
 //去掉数组中重复的元素
function unique(arr) {
var result = [], hash = {};
for (var i = 0, elem; (elem = arr[i]) != null; i++) {
if (!hash[elem]) {
result.push(elem);
hash[elem] = true;
}
}
return result;
}
 //打开弹出层时禁用滚动条
function DisableScrollBar() {
$("body").css({ overflow: "hidden" });
} //关闭弹出层时激活滚动条
function ActivateScrollBar() {
$("body").css({ overflow: "auto" });
}
 //输入框(只能输入整数)
function limitNum(e, LimitNumber) {
if (e.value.length == 1) {
e.value = e.value.replace(/[^0-9]/g, '');
}
else {
e.value = e.value.replace(/[^\d.]/g, '');
}
if (parseInt(e.value) > LimitNumber) { e.value = LimitNumber; }
}

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

  1. 鸟哥的Linux私房菜笔记第四章

    前言 对着<鸟哥的Linux私房菜-基础版>做了简化笔记.不想让自己知其然而不知其所然.所以写个博客让自己好好巩固一下,当然不可能把书中的内容全部写下来.在这里就简化一点把命令写下来. 让 ...

  2. Linux系统服务(daemon)(鸟哥Linux私房菜笔记)

    Linux系统服务(daemon) 一.SystemV的init管理机制(脚本式启动)1.服务启动分类stand alone 独立启动模式super daemon 总管程序 2.服务的启动.关闭与观察 ...

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

    学新东西,总感觉还是看书来的实在,直接看教程上手太慢且没有目的, 接下来先啃鸟哥这本吧,买的第三版,内容在鸟哥站上都有: 鸟哥的 Linux 私房菜 -- 基础学习篇目录 (繁体) http://cn ...

  4. 学习鸟哥的Linux私房菜笔记(1)——Linux系统入门

    今天在阿里云申请了一个centos系统的云服务器,以前对linux了解的只是皮毛,记了几个命令还给忘了,整了半天都弄不好,作为一个做过javaweb开发的coder实在是惭愧啊,决定从今天开始学习Li ...

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

    一.PHP基础语法   变量,常量     严格区分大小写,但内置结构或关键字无所谓(echo)     命名:不能以数字,空格,.来开头,但是可以有汉字,eg:$变量="aa"; ...

  6. Leetcode笔记(整理中.......)

    1.树的层序遍历 使用两个List 数组 或者 两个queue队列,交替进行,将遍历到的一层放在第一个里面,之后再将遍历到的第二层放在第二个里面. 2.将一个无符号整数的二进制表示形式逆向输出 需要将 ...

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

    数据包进入流程:规则顺序的重要性 iptables利用的是数据包过滤机制,所以它会分析数据包的包头数据.根据包头数据与定义的规则来决定该数据包是否可以进入主机或者是被丢弃.也就是说,根据数据包的分析资 ...

  8. IOS 错误集合以及解决办法(持续整理中)

    1 . 如下错误: app:resource fork, Finder information, or similar detritus not al site:forums.developer.ap ...

  9. [置顶] 学习鸟哥的Linux私房菜笔记(6)——过滤器、输入输出及管道

    一.过滤器 Linux中的应用工具分为三种: 交互工具 过滤器 编辑器 能够接受数据,过滤再输出的工具,称之为过滤器 对过滤器和进程,存在着输入源与输出对象 二.输入.输出.重定向 输入:过滤器的数据 ...

随机推荐

  1. 我的python之路【第二篇】数据类型与方法

    一.Python中有哪些数据类型 整型 在32位的系统中: 取值范围就是-(2^31) 到2^31-1 在64位系统中:   取值范围就是-(2^63) 到2^63-1 浮点型 布尔型 字符型 字符串 ...

  2. CA/B Forum: SSL证书最长有效期最终被定为两年

    这项新规将在2018年实施...... 随着CAB Forum第193号投票的通过,SSL行业将拥有更新更短的最长SSL证书有效期. 作为SSL行业的风向标,CAB Forum制定过许多行业规则,及规 ...

  3. Luogu1074靶形数独【启发式搜索】

    Luogu1074靶形数独 题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他 们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教, ...

  4. 记录一次raid数据恢复及回迁成功的案例

    故障发生在两块盘组成的一个raid0上,其中的一块盘亮黄灯,被raid卡踢出后,raid崩溃,下面就把当时抢救数据的整个过程进行介绍. 由于硬盘是两块SAS 300G的硬盘,先把硬盘从机器中拔出来,然 ...

  5. 【转】windows浏览共享切换用户登录的方法

    1.打开 “我的电脑” 单击 菜单栏“工具”,选择“映射网络驱动器” ,单击“使用其他用户名”,在弹出的对话框之中输入用户名.密码2.遇到提示“您已经建立连接,不能重复连接”类似信息的时候,在开始-运 ...

  6. Mybatis基础学习(一)—初识MyBatis

    一.MyBatis是什么?      MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google co ...

  7. ThinkPHP框架前后台的分页调用

    一般ThinkPHP框架在底层给开发者提供了一个基本的分页类Page.class.php里面规定了Page类的一些基本的参数和结构. 2.应用分页 1> 调取文件use Think\Page; ...

  8. reids数据类型

      今天第一次开通,写的不好,请谅解   redis并不是简单的key-value存储,实际上它是一个数据结构服务器,支持不同类型的值,也就是说,我们不仅仅把字符串当作键所指向的值,   如下这些数据 ...

  9. 第二章 Struts 2的应用

    2.1 Struts 2的应用    2.1.1 使用步骤        1.创建web项目,添加jar包,创建helloWorld.jsp页面        2.创建HelloWorldAction ...

  10. java多线程基本概述(二十)——中断

    线程中断我们已经直到可以使用 interrupt() 方法,但是你必须要持有 Thread 对象,但是新的并发库中似乎在避免直接对 Thread 对象的直接操作,尽量使用 Executor 来执行所有 ...