一些JS常用的方法
/**
* JS公用类库文件
*/ (function(){
Tools = {
W: window,
D: document,
Postfix: ".php",
GetId: function(id){return document.getElementById(id)},
hi:function(){alert('Hi')}, /**
* 验证类
*/
Check: {
/**
* 验证表单输入框的值是否与指定值相符
* @param name 要验证的输入框的name
* @param value 要验证的值
* @param message 验证失败时弹出的消息提示
* @returns {boolean} 若与给定值相等,则返回true,不相等则返回false
*/
input: function(name,value){
var input = $(":input[name='"+name+"']");
if(input.val() == value){
input.focus();
return true;
}
return false;
}, /**
* 验证输入框的值是否为手机号码的格式
* @param name 要验证的输入框的name
* @returns {boolean} 若不符合格式要求返回true,否则返回false
*/
phone: function(name){
/*
* 联通号段:130/131/132/155/156/185/186/145/176;
* 电信号段:133/153/180/181/189/177;
* 移动号段:134/135/136/137/138/139/150/151/152/157/158/159/182/183/184/187/188/147/178
*/
var reg = /^1(30|31|32|55|56|85|86|45|76|33|53|80|81|89|77|34|35|36|37|38|39|50|51|52|57|58|59|82|83|84|87|88|47|78)[0-9]{8}$/;
var input = $(":input[name='"+name+"']");
if(!reg.test(input.val())){
input.focus();
return true;
}
return false;
}, /**
* 验证输入框的值是否为邮箱格式
* @param name 要验证的输入框的name
* @returns {boolean} 若不符合格式要求返回true,否则返回false
*/
email: function(name){
var reg = /^[a-zA-Z0-9_]+@[a-z0-9]+\.[a-z]+$/;
var input = $(":input[name='"+name+"']");
if(!reg.test(input.val())){
input.focus();
return true;
}
return false;
}, /**
* 验证输入框的值是否符合用户名的格式要求
* @param name ~
* @returns {boolean} ~
*/
username: function(name){
var reg = /^[a-zA-Z][a-zA-z0-9]{4,15}$/;
var input = $(":input[name='"+name+"']");
if(!reg.test(input.val())){
input.focus();
return true;
}
return false;
}, /**
* 验证输入框的值是否符合密码格式要求
* 格式要求:不能为纯数字,不能为纯字符,不能为纯标点符号,不能小于6位,不能大于18位
* @param name ~
* @returns {boolean} ~
*/
password: function(name){
var reg = /^([A-Z]+)$|^([a-z]+)$|^([0-9]+)$|^([-`=\\\[\];',\.\/~!@#\$%\^&\*\(\)_+\|\{}:"<>\?]+)$|^.{0,6}$|^.{18,}$/
var input = $(":input[name='"+name+"']");
if(reg.test(input.val())){
input.focus();
return true;
}else{
return false;
}
}, /**
* 验证输入框的值是否符合身份证格式要求
* @param name ~
* @returns {boolean} ~
*/
identification: function(name){
var city={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江 ",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北 ",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏 ",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外 "};
var input = $(":input[name='" + name + "']");
var code = Ident.val(); if(!code || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(code)){
input.focus();
return true;
} else if(!city[code.substr(0,2)]){
input.focus();
return true;
}
else{
//18位身份证需要验证最后一位校验位
if(code.length == 18){
code = code.split('');
//∑(ai×Wi)(mod 11)
//加权因子
var factor = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];
//校验位
var parity = [ 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 ];
var sum = 0;
var ai = 0;
var wi = 0;
for (var i = 0; i < 17; i++)
{
ai = code[i];
wi = factor[i];
sum += ai * wi;
}
var last = parity[sum % 11];
if(parity[sum % 11] != code[17]){
input.focus();
return true;
}
}
}
return false;
}
}, /**
* 用户中心类
*/
Member: { /**
* 登录方法
* @param username 用户名输入框的name
* @param password 密码输入框的name
* @param requestURL 验证地址
* @param locationURL 通过后的跳转地址
* @returns {boolean}
*/
login: function(username, password, requestURL, locationURL){
var usernameInput = $(":input[name='" + username + "']");
var passwordInput = $(":input[name='" + password + "']");
if(Tools.Check.username(username)){
alert("用户名格式不符合要求");
return false;
}
if(Tools.Check.password(password)){
return false;
}
$.ajax({
url:requestURL,
type:"POST",
data:{
request:"Login",
username:usernameInput.val(),
password:passwordInput.val()
},
dataType:"json",
success:function(data){
if(data.state != 200){
alert(data.message);
return false;
}else{
location.href= locationURL;
}
}
});
},
logout:function(URL){
location.href = URL;
}
}, Public: { /**
* 复选框全选/反选方法
* @param className 每组复选框的className
* @param action 全选或反选操作,值为真则全选,值为假则反选
*/
boxAllSel: function(className,action){
var boxList = $(":input[type='checkbox']." + className);
if(action){
for(var I in boxList){
boxList[I].checked = true;
}
}else{
for(var I in boxList){
boxList[I].checked = boxList[I].checked ? false : true;
}
}
}, /**
* 批量请求方法,使用方法:
* 将下拉菜单option的值设置为此种格式:请求地址:请求标识:弹出提示的消息内容:是否接收输入:接收输入时显示的消息:接收输入时的默认值
* 请求地址:要发送到的URL地址,注意不要加后缀名。如action.php只需写action即可,后缀名在Tools中统一设置
* 请求标识:本次请求发送的处理标识信息
* 是否接收输入:true or false
* @param o 操作列表的对象,如果直接在select对象上调用,传入this即可
* @param className 复选框组的className
*/
requests: function(o,className){
//批量请求
//url.request.message.input.inputMessage.inputValue
var data = $("."+ className +":checked").serialize();
if(data == ''){
alert("您没有选中任何项");
o.value = o.options[0].value;
return;
}
var tempArr = O.value.split('.');
if(!tempArr[0] || !tempArr[1]){
//验证URL及动作
alert("错误:缺少必须参数");
o.value = o.options[0].value;
return;
}
data += "&request=" + tempArr[1];
var message = "确认删除选中项吗?";
if(tempArr[2]){
//验证并设置提示消息
message = tempArr[2];
}
if(confirm(message)){
var input = false;
if(tempArr[3]){
//验证并设置是否接收用户输入
input = true;
}
if(input == 'True'){
var inputVal = prompt(tempArr[4],tempArr[5]);
data += "&input=" + inputVal;
}
$.ajax({
url:"./"+tempArr[0] + Tools.Postfix,
type:'GET',
data:data,
dataType:'json',
async:false,
success:function(data){
alert(data.message);
location.reload(true);
}
});
}
}, /**
* 单词请求
*/
request: {
Data : '',
MetHod : '',
DataType : '',
Async : '', /**
* 设置请求参数
* @param options 请求时发送的参数对象
* @param method 请求方式,默认GET
* @param dataType 接收数据类型,默认json
* @param async 是否异步,默认为true
* @returns {Tools} 返回对象本身,以供调用send
*/
setData:function(options,method,dataType,async){
this.Data = options;
this.MetHod = typeof method == 'undefined' ? 'GET' : method;
this.DataType = typeof dataType == 'undefined' ? 'json' : dataType;
this.Async = typeof async == 'undefined' ? true : async;
return this;
}, /**
* 发送请求
* @param Url 请求地址
* @param call 成功回调函数,可不设
* @param alertMessage 是否弹出确认对话框
* @param message 确认对话框内容
*/
send:function(Url,call,alertMessage,message){
if(!message){
message = "确认删除吗?";
}
if(typeof call != 'function'){
call = function(data){
switch(this.dataType){
case 'text' :alert(data);break;
default :alert(data.message);break
}
location.reload(true);
}
}
var alertControl = true; //控制是否弹出提示消息
var sendControl = true; //控制是否发送本次请求
var LId;
if(typeof alertMessage != 'undefined' && alertMessage == false){alertControl = false}
if(alertControl && !confirm(message)){sendControl = false;}
if(sendControl){
$.ajax({
url:Url,
type:this.MetHod,
data:this.Data,
dataType:this.DataType,
async:this.Async,
beforeSend:function(O){LId = Tools.Public.Loading.open();},
success:call,
error:function(E,Info,EO){alert(E.statusText + ":" + E.responseText);},
complete:function(O){Tools.Public.Loading.close(LId);}
});
}
}
}, /**
* 在input后添加描述文本框
*/
Description: {
DescId: '', /**
* 显示描述文字,可用于用户名/密码格式要求,在input标签上设置onfocus属性来使用
* @param o 使用该方法的对象,一般在input标签上使用是传入this对象
* @param message 显示的内容
*/
display: function(o,message){
var id = parseInt(Math.random() * 1000);
this.DescId = id;
var description = Tools.D.createElement('description');
description.id = id;
description.innerHTML = message;
description.style.width = "200px";
description.style.border = "1px solid #dfdfdf";
description.style.backgroundColor = "#fff";
description.style.lineHeight = "normal";
description.style.position = "absolute";
description.style.top = o.offsetTop + 'px';
description.style.marginLeft = "5px";
$(o).after(description);
o.setAttribute("onblur",'Tools.Public.Description.close()');
},
close: function(){
$("#"+this.DescId).remove();
}
}, Loading : {
WindowId:'',
open: function(message){
var id = parseInt(Math.random() * 1000);
this.WindowId = id;
var div = Tools.D.createElement("div");
div.id = id;
div.style.width = "80%";
div.style.height = "50px";
div.style.backgroundColor = "#000";
div.style.opacity = "0.5";
div.style.borderRadius = "10px";
div.style.position = "fixed";
div.style.top = (Tools.W.innerHeight - 50) / 2 + "px";
div.style.left = "10%";
var pTag = Tools.D.createElement("p");
pTag.style.textAlign = "center";
pTag.style.color = "#fff";
pTag.style.lineHeight = "50px";
pTag.style.height = "50px";
pTag.style.margin = "0";
var imgTag = Tools.D.createElement('img');
imgTag.src = "/Public/images/loading.gif"; //在这里设置加载中图标
imgTag.style.marginBottom = "-5px";
if(message){
pTag.innerHTML = message;
}else{
pTag.innerHTML = "正在处理中";
}
pTag.appendChild(imgTag);
Tools.D.body.appendChild(div);
Tools.GetId(this.WindowId).appendChild(pTag);
return id;
},
close:function(id){
if(typeof id != 'undefined' && id != null){
Tools.D.body.removeChild(Tools.GetId(Id));
}else if(this.WindowId != ''){
Tools.D.body.removeChild(Tools.GetId(this.WindowId));
}
}
}
}
};
})();
一些JS常用的方法的更多相关文章
- JS常用校验方法(判断输入框是否为空,数字,电话,邮件,四舍五入等)
JS常用校验方法: 1.判断输入框是否为空,为空时弹出提示框 2.关闭窗口 3.检查输入字符串是否为数字 4.强制把大写转换成小写 5.手机号码校验,长度为11位数字. 6.电子邮件校验 7.电话号码 ...
- 【js常用DOM方法】
介绍几个js DOM的常用方法 获取元素节点 getElementById getElementsByTagName getElementsByClassName 先写一个简单的网页做测试: /* ...
- JS常用公共方法封装
_ooOoo_ o8888888o 88" . "88 (| -_- |) O\ = /O ____/`---'\____ .' \\| |// `. / \\||| : |||/ ...
- js常用API方法
String对象常用的API:API指应用程序编程接口,实际上就是一些提前预设好的方法. charAt() 方法可返回指定位置的字符. stringObject.charAt(index) index ...
- js常用通用方法
验证身份证详细方法 function isCardNo(pId) { var arrVerifyCode = [1, 0, "x", 9, 8, 7, 6, 5, 4, 3, 2] ...
- js常用共同方法
var uh_rdsp = (function(){ //获取根目录 var getContextPath = function(){ var pathName = document.location ...
- Node.js 常用Mongoose方法
Node.js 手册查询-Mongoose 方法 一.Schema 一种以文件形式存储的数据库模型骨架,无法直接通往数据库端,也就是说它不具备对数据库的操作能力.可以说是数据属性模型(传统意义的表结构 ...
- Node.js常用express方法
Node.js 手册查询-Express 方法 1.send方法 send 方法向浏览器发送一个响应信息,并可以智能处理不同类型的数据 send方法在输出响应时会自动进行一些设置,比如HEAD信息.H ...
- JS常用属性方法大全
1. 输出语句 : document.write(""); 2.JS 中的注释为 : // 3. 传统的 HTML 文档顺序是 : document->html->(h ...
随机推荐
- Codeforces Round #196 (Div. 1) 题解
(CF唯一不好的地方就是时差……不过还好没去考,考的话就等着滚回Div. 2了……) A - Quiz 裸的贪心,不过要用矩阵乘法优化或者直接推通式然后快速幂.不过本傻叉做的时候脑子一片混乱,导致WA ...
- AGC 012 D - Colorful Balls
题面在这里! 为什么atcoder都是神仙题啊qwq 首先发现如果要让 x,y 互换位置的话,要么通过他们直接换 (也就是x和y满足两种操作之一),要么间接换,通过一些其他的元素形如 x可以和 a[1 ...
- 【Kruskal】舒适的路线
[codevs1001]舒适的路线 题目描述 Description Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z小镇附近共有N(1<N≤500)个景点(编号为1,2,3,… ...
- 【动态规划去除冗余】NOIP2010-乌龟棋
[题目大意] [思路] 最简单的思路是五维数组,但是当前走到的步数由已经取到的卡片决定,所以只需要四维.本来想要改一个滚动数组的,但是好像没有滚起来,算了(ノ`Д)ノ. 在学校要晚自习到21:15,回 ...
- JDK源码学习笔记——HashMap
Java集合的学习先理清数据结构: 一.属性 //哈希桶,存放链表. 长度是2的N次方,或者初始化时为0. transient Node<K,V>[] table; //最大容量 2的30 ...
- javaWeb中的JDBC学习入门
学习引荐地址:https://www.cnblogs.com/xdp-gacl/p/3946207.html 一.JDBC的相关概念介绍 1.1 数据库驱动 其实就好比我们平时使用到的独立声卡.网卡之 ...
- springBoot单元测试-基础单元测试
1)在pom文件中加入junit支持 <!-- spring-boot-starter-test 单元测试 --> <dependency> <groupId>or ...
- 微软浏览器兼容工具modern.IE
http://www.browserstack.com/screenshots
- iOS:操作队列实现多线程NSOperation
NSOperation具体使用:直接继承NSObject 它的子类有:NSBlockOperation.NSInvocationOperation 还有一个必须的类,队列,用来装创建的线程 NSOpe ...
- 用WM_COPYDATA消息来实现两个进程之间传递数据
文着重讲述了如果用WM_COPYDATA消息来实现两个进程之间传递数据. 进程之间通讯的几种方法:在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯.常用的方法有 1.使用内存映射 ...