js工具箱
1、判断浏览器的innerText或textContent属性
function setcontent(element,content){
if(typeof element.innerText === "string"){
return element.innerText = content;
}else {
return element.textContent = content;
}
};
2、获取页面的当中可视区域的宽高度的兼容函数
function getClient(){
return {
width: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth || 0,
height: window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0
}
};
3、获取下一个兄弟元素的兼容函数
function getEleSibling(element){
if(element.nextElementSibling){
return element.nextElementSibling;
}else {
var next = element.nextSibling;
while(next && next.nodeType !== 1){
next = next.nextSibling
}
return next;
}
};
4、获取上一个兄弟元素的兼容函数
function setprev(element){
if(element.previousElementSibling){
return element.previousElementSibling;
}else {
var prev = element.previousSibling;
while(prev && prev.nodeType !== 1){
prev = prev.previousSibling;
}
return prev;
};
};
5、获取类名的兼容函数
function getClassName(ele,className){
if(ele.getElementsByClassName){
return ele.getElementsByClassName(className);
}else {
var elements = ele.getElementsByTagName("*");
var arr = [];
for (var i = 0; i < elements.length; i++) {
if(elements[i].className.indexOf(className) !== -1){
arr.push(elements[i]);
}
}
return arr;
}
};
6、匀速动画的封装函数
function animate(Obj,target){
clearInterval(Obj.timer);
Obj.timer = setInterval(function(){
var leader = Obj.offsetLeft,
step = 10,
step = leader < target ? step : -step;
if(Math.abs(leader - target) > Math.abs(step)){
Obj.style.left = leader + step + "px";
}else {
Obj.style.left = target + "px";
clearInterval(Obj.timer);
}
},15)
};
7、获取页面被卷去的头部高度和左侧宽度的 兼容函数
function scroll(){
return {
top : window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0,
left : window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0
}
};
9、获取外部样式的兼容函数
function getStyle(obj,attr){
if(window.getComputedStyle){
return window.getComputedStyle(obj,null)[attr];
}else {
return obj.currentStyle[attr];
}
};
10、用缓动动画封装一个回调函数(包含透明度和层级)
function setanimate3(obj,josn,fn){
clearInterval(obj.timer);
obj.timer = setInterval(function(){
var flag = true;
for(var key in josn){
if(key === "opacity"){
var leader = getStyle(obj,key) * 100;
var step = (josn[key] * 100 - leader) / 10;
step = step > 0 ? Math.ceil(step) : Math.floor(step);
obj.style[key] = (leader + step) / 100;
}else if(key === "zIndex"){
obj.style[key] = josn[key];
}else {
var leader = parseInt(getStyle(obj,key)) || 0;
var step = (josn[key] - leader) / 10;
step = step > 0 ? Math.ceil(step) : Math.floor(step);
obj.style[key] = leader + step + "px";
}
if(josn[key] !== leader){
flag = false;
}
}
if(flag){
clearInterval(obj.timer);
if(fn){
fn();
}
}
},15)
};
function getStyle(obj,attr){
if(window.getComputedStyle){
return window.getComputedStyle(obj,null)[attr];
}else {
return obj.currentStyle[attr];
}
};
11、设置全屏的能力检测
btn1.onclick=function(){
//全屏
if(div.requestFullScreen){
div.requestFullScreen();
}else if(div.webkitRequestFullScreen){
div.webkitRequestFullScreen();
}else if(div.mozRequestFullScreen){
div.mozRequestFullScreen();
}else if(div.msRequestFullScreen){
div.msRequestFullScreen();
} else if(div.oRequestFullScreen){
div.oRequestFullScreen();
}
};
btn2.onclick=function(){
//退出全屏
if(document.cancelFullScreen){
document.cancelFullScreen();
}else if(document.webkitCancelFullScreen){
document.webkitCancelFullScreen();
}else if(document.mozCancelFullScreen){
document.mozCancelFullScreen();
}else if(document.msCancelFullScreen){
document.msCancelFullScreen();
}else if(document.oCancelFullScreen){
document.oCancelFullScreen();
}
};
btn3.onclick=function(){
//检测是否全屏
if(document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || document.oFullscreenElement){
alert(true);
}else {
alert(false);
}
};
12、拖拽任意元素
//被拖拽元素
document.ondragstart = function(event){
event.dataTransfer.setData("text/html",event.target.id);
};
//目标元素
document.ondragover = function(event){
event.preventDefault();
};
document.ondrop = function(event){
var x = event.dataTransfer.getData("text/html");
event.target.appendChild(document.getElementById(x));
};
13、模拟jquery的ajax请求文件(跨域(jsonp)和不跨域(json)。
function ajax(obj){
var defaus = {
type:"get",
url:"#",
async:true,
data:{},
jsonp:"callback",
dataType:"text",
success:function(data){
console.log(data);
}
};
for(var key in obj){
defaus[key] = obj[key];
};
if(defaus.dataType === "jsonp"){
ajaxJsonp(defaus);
}else {
ajaxJson(defaus);
};
function ajaxJsonp(){
var cbName = "jQuery" + ("1.11.1" + Math.random()).replace(/\D/g,"") + "_" + (new Date().getTime());//这里是设置的默认的回调函数名字
if(defaus.jsonpCallback){//这里是为了方便设置jsonp的默认名字
cbName = defaus.jsonpCallback;
};
window[cbName] = function(data){//这里就是回调函数,调用方式服务器响应内容来调用,实际上时向window中添加了一个方法,方法名是变量cbname的值
try {//用try---finally将请求完数据的script标签从页面中删除
defaus.success(data);//这里的data是实参
}finally{
script.parentNode.removeChild(script);//将请求数据后的script标签删除
delete window[cbName];//将添加在window上的自定义方法删除
}
};
var parm = "";
for(var key in defaus.data){
parm += key + "=" + defaus.data[key] + "&";
};
if(parm){
parm += parm.substring(0,parm.length - 1);
parm = "&" + parm;
};
var script = document.createElement("script");
script.src = defaus.url + "?" + defaus.jsonp + "=" + cbName + parm;
var head = document.getElementsByTagName("head")[0];
head.appendChild(script);
};
function ajaxJson(){
var xhr;
if(window.XMLHttpRequest){//处理兼容Ajax请求
xhr = new XMLHttpRequest();
}else {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
};
var parm = "";//将对象形式的参数(实参)转为字符串,
for(var key in defaus.data){//这里是用来将(get请求后边要传入的键值对)中的值赋值给parm
parm += key + "=" + defaus.data[key] + "&";
};
if(parm){//如果parm中有值,则将其提取出来,目的是为了去掉最后一个多余的&符号
parm = parm.substring(0,parm.length-1);//从0开始截取,截取到最后一个值也可使用substring()方法
};
if(defaus.type === "get"){//处理get参数
defaus.url += "?"+ encodeURI(parm);//这里是为了防止中文乱码的问题。
};
xhr.open(defaus.type,defaus.url,defaus.async);//设置发送参数
var code = null;
if(defaus.type === "post"){//处理post参数,且必须设置头信息
code = parm;
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
}
xhr.send(code);//执行发送动作
//处理同步请求,注意,同步的话就不使用回调函数了
if(!defaus.async){
if(defaus.dataType === "json"){
return JSON.parse(xhr.responseText);
}else {
return xhr.responseText;
};
};
xhr.onreadystatechange = function(){
if(xhr.readyState === 4){
if(xhr.status === 200){
var data = xhr.responseText;
if(defaus.dataType === "json"){
data = JSON.parse(data);//注意:使用此方法要引入json.js包(为了适应IE和旧版浏览器);
};
defaus.success(data);
};
};
};
}
};
14、获取URL地址栏。
//方法一:正则
function GetQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg); //获取url中"?"符后的字符串并正则匹配
var context = "";
if (r != null)
context = r[2];
reg = null;
r = null;
return context == null || context == "" || context == "undefined" ? "" : context;
};
//方法二:
function getSearchString(key) {//key就是要截取的参数的键
// 获取URL中?之后的字符
var str = location.search;
str = str.substring(1,str.length);
// 以&分隔字符串,获得类似name=xiaoli这样的元素数组
var arr = str.split("&");
var obj = new Object();
// 将每一个数组元素以=分隔并赋给obj对象
for(var i = 0; i < arr.length; i++) {
var tmp_arr = arr[i].split("=");
obj[decodeURIComponent(tmp_arr[0])] = decodeURIComponent(tmp_arr[1]);
}
return obj[key];
};
//方法三:
function getQueryString(name) {
try {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var url = location.href.split("?");
r = url[1].match(reg);
if (r != null) return unescape(r[2]);
return "";
} catch (e) {
return "";
}
};
15、获取当前日期信息
function getDayTime() {
var d = new Date();
var year = d.getFullYear();
var month = d.getMonth() + 1;
var date = d.getDate();
var day = d.getDay();
var h = d.getHours();
var m = d.getMinutes();
var s = d.getSeconds();
if (h < 10) { h = "0" + h; }
if (m < 10) { m = "0" + m; }
if (s < 10) { s = "0" + s; }
var week = ["日", "一", "二", "三", "四", "五", "六"];
//var str = year + "年" + month + "月" + date + "日 星期" + week[day] + " " + h + ":" + m + ":" + s;
var str = year + "年" + month + "月" + date + "日 星期" + week[day] + " " + h + ":" + m;
return str;
};
16、按出生日期算年龄
function birthDataChangeAge(date) {
if (date == "" || date == undefined) {
return "";
}
var r = date.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
var d = new Date(r[1], r[3] - 1, r[4]);
if (r == null) {
return false;
}
else if (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4]) {
var Y = new Date().getFullYear();
return (Y - r[1]);
}
else {
return false;
}
};
17、18位身份证号验证
function isIdCard(idcard) {
if (idcard.length != 18) {
return false
}
var num = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
var total = 0;
for (i = 0; i < 17; i++) {
total = total + Number(idcard.substring(i, i + 1)) * num[i];
}
var mod = total % 11;
var charx = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
if (idcard.substring(17, 18).toUpperCase() == charx[mod]) {
console.log("身份证号正确");
return true;
} else {
console.log("身份证号错误");
return false
}
};
18、cookie设置,存取,删除
//设置cookie
function setCookie(name, value, seconds) {
seconds = seconds || 0; //seconds有值就直接赋值,没有为0,这个根php不一样。
var expires = "";
if (seconds != 0) { //设置cookie生存时间
var date = new Date();
date.setTime(date.getTime() + (seconds * 1000));
expires = "; expires=" + date.toGMTString();
}
document.cookie = name + "=" + escape(value) + expires + "; path=/"; //转码并赋值
};
//取得cookie
function getCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';'); //把cookie分割成组
for (var i = 0; i < ca.length; i++) {
var c = ca[i]; //取得字符串
while (c.charAt(0) == ' ') { //判断一下字符串有没有前导空格
c = c.substring(1, c.length); //有的话,从第二位开始取
}
if (c.indexOf(nameEQ) == 0) { //如果含有我们要的name
return unescape(c.substring(nameEQ.length, c.length)); //解码并截取我们要值
}
}
return false;
};
//清除cookie
function clearCookie(name) {
setCookie(name, "", -1);
};
19、MD5加密
function md5(sMessage) {
function RotateLeft(lValue, iShiftBits) { return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits)); }
function AddUnsigned(lX, lY) {
var lX4, lY4, lX8, lY8, lResult;
lX8 = (lX & 0x80000000);
lY8 = (lY & 0x80000000);
lX4 = (lX & 0x40000000);
lY4 = (lY & 0x40000000);
lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
if (lX4 & lY4) {
return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
}
if (lX4 | lY4) {
if (lResult & 0x40000000) {
return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
}
else {
return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
}
}
else {
return (lResult ^ lX8 ^ lY8);
}
}
function F(x, y, z) { return (x & y) | ((~x) & z); }
function G(x, y, z) { return (x & z) | (y & (~z)); }
function H(x, y, z) { return (x ^ y ^ z); }
function I(x, y, z) { return (y ^ (x | (~z))); }
function FF(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
}
function GG(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
}
function HH(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
}
function II(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
}
function ConvertToWordArray(sMessage) {
var lWordCount;
var lMessageLength = sMessage.length;
var lNumberOfWords_temp1 = lMessageLength + 8;
var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;
var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;
var lWordArray = Array(lNumberOfWords - 1);
var lBytePosition = 0;
var lByteCount = 0;
while (lByteCount < lMessageLength) {
lWordCount = (lByteCount - (lByteCount % 4)) / 4;
lBytePosition = (lByteCount % 4) * 8;
lWordArray[lWordCount] = (lWordArray[lWordCount] | (sMessage.charCodeAt(lByteCount) << lBytePosition));
lByteCount++;
}
lWordCount = (lByteCount - (lByteCount % 4)) / 4;
lBytePosition = (lByteCount % 4) * 8;
lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
return lWordArray;
}
function WordToHex(lValue) {
var WordToHexValue = "", WordToHexValue_temp = "", lByte, lCount;
for (lCount = 0; lCount <= 3; lCount++) {
lByte = (lValue >>> (lCount * 8)) & 255;
WordToHexValue_temp = "0" + lByte.toString(16);
WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2);
}
return WordToHexValue;
}
var x = Array();
var k, AA, BB, CC, DD, a, b, c, d
var S11 = 7, S12 = 12, S13 = 17, S14 = 22;
var S21 = 5, S22 = 9, S23 = 14, S24 = 20;
var S31 = 4, S32 = 11, S33 = 16, S34 = 23;
var S41 = 6, S42 = 10, S43 = 15, S44 = 21;
x = ConvertToWordArray(sMessage);
a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
for (k = 0; k < x.length; k += 16) {
AA = a; BB = b; CC = c; DD = d;
a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);
d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);
c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);
b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);
a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);
d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);
c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);
b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);
a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);
d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);
c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);
b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);
a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);
d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);
c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);
b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);
a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);
d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);
c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);
b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);
a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);
d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);
c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);
b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);
a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);
d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);
c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);
b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);
a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);
d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);
c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);
b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);
a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);
d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);
c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);
b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);
a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);
d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);
c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);
b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);
a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);
d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);
c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);
b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);
a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);
d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);
c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);
b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);
a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);
d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);
c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);
b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);
a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);
d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);
c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);
b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);
a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);
d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);
c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);
b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);
a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);
d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);
c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);
b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);
a = AddUnsigned(a, AA); b = AddUnsigned(b, BB);
c = AddUnsigned(c, CC); d = AddUnsigned(d, DD);
}
var temp = WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d);
return temp.toUpperCase();
};
20、常用正则验证
function regNum(number){
return /[\u4e00-\u9fa5]/.test(number);//密码不能输入中文
};
function regIDcard(regIDcard){
return /(^\d{18}$)|(^\d{17}(\d|[Xx])$)/.test(regIDcard);//身份证号为字符和数字且为18位
};
function regPhone(regPhone){
return /^1[34578]\d{9}$/.test(regPhone);//手机号码验证
};
function regNumsz(code){
return /^\d{4}$/.test(code);//验证码为纯数字
}
function regName() {
return /^[\u4e00-\u9fa5]+(·[\u4e00-\u9fa5]+)*$|^[\u4E00-\u9FA5A-Za-z]+$|^[A-Za-z]+(·[A-Za-z]+)*$/.test(name);//姓名只能输入汉字或者英文
};
function regEmail() {
return /^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$/;//邮箱格式验证
};
21、验证码倒计时
function YZTimeOut() {
$("#phonenum").attr("disabled", true);
lgmsgOutTime = null;
var lgmsgTime = 60;
//验证码倒计时;
if (!lgmsgOutTime) {
lgmsgOutTime = setInterval(function () {
if (lgmsgTime > 0) {
lgmsgTime--;
$("#plg_timeout").html(lgmsgTime);
} else {
clearInterval(lgmsgOutTime);
lgmsgTime = 60;
$("#plg_timeout").html(lgmsgTime);
$("#phonenum").removeAttr("disabled");
lgmsgOutTime = null;
}
}, 1000);
}
};
//登录验证码复原(登陆成功后操作)
function YzmLgReset() {
clearInterval(lgmsgOutTime);
var lgmsgTime = 60;
$("#plg_timeout").html(lgmsgTime);
$("#plg_SendCode").show();
$("#plg_CountDown").hide();
$("#phonenum").removeAttr("disabled");
lgmsgOutTime = null;
};
22、判断是ios还是安卓系统(浏览器用)
function IsIos() {
var u = navigator.userAgent, app = navigator.appVersion;
//苹果
if (u.indexOf('AppleWebKit') > -1 && u.indexOf('MicroMessenger') > -1 && u.indexOf('iPhone') > -1 && !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)) {
return true;
} else {
//安卓
return false;
};
};
23、社会统一信用代码校验
function CheckCreditCode(creditCode, isSubtle) {
if (creditCode == null || creditCode == undefined || creditCode == "") return false;
if (isSubtle != false) isSubtle = true;
if (!isSubtle) creditCode = creditCode.toUpperCase();
var Ancode, Ancodevalue, total = 0;
var weightedfactors = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28];//权
var str = '0123456789ABCDEFGHJKLMNPQRTUWXY';
for (var i = 0; i < creditCode.length - 1; i++) {
Ancode = creditCode.substring(i, i + 1);
Ancodevalue = str.indexOf(Ancode);
total = total + Ancodevalue * weightedfactors[i];
}
var logiccheckcode = 31 - total % 31;
if (logiccheckcode == 31) {
logiccheckcode = 0;
}
var Str = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,T,U,W,X,Y";
var Array_Str = Str.split(',');
logiccheckcode = Array_Str[logiccheckcode];
var checkcode = creditCode.substring(17, 18);
return logiccheckcode == checkcode;
};
24、营业执照注册号校验
function CheckRegCode(regCode) {
var result = -1;
if (regCode.length > 1) {
var ti = 0, si = 0, cj = 0, pj = 10;
for (var i = 0; i < regCode.length; i++) {
ti = parseInt(regCode.substring(i, i + 1));
si = pj + ti;
cj = (0 == si % 10 ? 10 : si % 10) * 2;
pj = (cj % 11) == 0 ? 10 : (cj % 11);
if (i == regCode.length - 1) {
if (regCode.length == 14) {
pj = (cj % 11) == 0 ? 10 : (cj % 11);
result = 1 - pj < 0 ? 11 - pj : 1 - pj;
} else if (regCode.length == 15) {
result = si % 10;
}
}
}
}
return result == 1;
};
25、组织机构代码校验
function CheckOrgCode(orgCode, isSubtle) {
if (orgCode == null || orgCode == undefined || orgCode == "") return false;
if (isSubtle != false) isSubtle = true;
if (!isSubtle) orgCode = orgCode.toUpperCase();
var ws = [3, 7, 9, 10, 5, 8, 4, 2];
var str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//判断是否有“-”,如果没有则添加“-”
var aaa = orgCode.slice(orgCode.length - 2, orgCode.length - 1);
if(aaa != "-"){
orgCode = orgCode.slice(0, orgCode.length - 1) + "-" + orgCode.slice(orgCode.length - 1);
};
if (!/^([0-9A-Z]){8}-[0-9|X]$/.test(orgCode)) return false;
var sum = 0;
for (var i = 0; i < 8; i++) {
var c = orgCode.substring(i, i + 1);
//var c = orgCode.ToCharArray()[i];
sum += str.indexOf(c) * ws[i];
}
var c9 = 11 - (sum % 11);
var sc9 = c9 + "";
if (11 == c9) {
sc9 = "0";
} else if (10 == c9) {
sc9 = "X";
}
var oc = orgCode.substring(9, 10);
return sc9 == oc;
};
26、循环获取二级字典
function getEjVal(dictory, ids) {
if (ids != "" && ids != null && ids != undefined) {
var arr = ids.split(",");
var empty = [];
$.each(dictory, function (i, item) {
var childs = item.children;
//二级循环
$.each(childs, function (i, item) {
for (var k = 0; k < arr.length; k++) {
if (item.id == arr[k]) {
empty.push(item.value);
};
};
});
});
//console.log(empty);
return empty.join(",");
};
};
27、循环获取三级字典
function getThreeDicoy(dictory,ids) {
//一项
if (ids != undefined && ids != "" && ids != null) {
var idsArr = ids.split(",");
var empty = [];
//一级循环
for (var i = 0; i < dictory.length; i++) {
var ejChilds = dictory[i].children;
//二级循环
for (var j = 0; j < ejChilds.length; j++) {
var sjChilds = ejChilds[j].children;
//三级循环
for (var k = 0; k < sjChilds.length; k++) {
//循环传过来的ID
for (var m = 0; m < idsArr.length; m++) {
if (idsArr[m] == sjChilds[k].id) {
empty.push(sjChilds[k].value);
};
};
};
};
};
return empty.join(",");
};
};
28、兼容ie初始选择框和input框(placeholder提示)
function InitPlaceholder() {
$("select").each(function () {
if ($(this).val() == "" || $(this).val() == null) {
$(this).css({ "color": "#999999" });
} else if ($(this).val() == $(this).attr("placeholder")) {
$(this).css({ "color": "#999999" });
} else {
$(this).css({ "color": "#454545" });
}
});
$("select").change(function () {
if ($(this).val() == "") {
$(this).css({ "color": "#999999" });
} else if ($(this).val() == $(this).attr("placeholder")) {
$(this).css({ "color": "#999999" });
} else {
$(this).css({ "color": "#454545" });
}
});
$("input:button").each(function () {
if ($(this).val() == "") {
$(this).val($(this).attr("placeholder"))
$(this).css({ "color": "#999999" });
} else if ($(this).val() == $(this).attr("placeholder")) {
$(this).css({ "color": "#999999" });
} else {
$(this).css({ "color": "#454545" });
}
});
$("input:button").change(function () {
if ($(this).val() == "") {
$(this).val($(this).attr("placeholder"))
$(this).css({ "color": "#999999" });
} else if ($(this).val() == $(this).attr("placeholder")) {
$(this).css({ "color": "#999999" });
} else {
$(this).css({ "color": "#454545" });
}
});
};
29.判断是pc还是移动
function IsPC() {
var userAgentInfo = navigator.userAgent;
var Agents = ["Android", "iPhone",
"SymbianOS", "Windows Phone",
"iPad", "iPod"];
var flag = true;
for (var v = 0; v < Agents.length; v++) {
if (userAgentInfo.indexOf(Agents[v]) > 0) {
flag = false;
break;
}
}
return flag;
};
/**
* 计算年龄(根据出生日期)
* 计算年份->计算月份->计算天数
*/
function getDiffYmdBetweenDate(sDate1,sDate2){
var fixDate = function(sDate){
var aD = sDate.split('-');
for(var i = 0; i < aD.length; i++){
aD[i] = fixZero(parseInt(aD[i]));
}
return aD.join('-');
};
var fixZero = function(n){
return n < 10 ? '0'+n : n;
};
var fixInt = function(a){
for(var i = 0; i < a.length; i++){
a[i] = parseInt(a[i]);
}
return a;
};
var getMonthDays = function(y,m){
var aMonthDays = [0,31,28,31,30,31,30,31,31,30,31,30,31];
if((y%400 == 0) || (y%4==0 && y%100!=0)){
aMonthDays[2] = 29;
}
return aMonthDays[m];
};
var checkDate = function(sDate){
};
var y = 0;
var m = 0;
var d = 0;
var sTmp;
var aTmp;
sDate1 = fixDate(sDate1);
sDate2 = fixDate(sDate2);
if(sDate1 > sDate2){
sTmp = sDate2;
sDate2 = sDate1;
sDate1 = sTmp;
}
var aDate1 = sDate1.split('-');
aDate1 = fixInt(aDate1);
var aDate2 = sDate2.split('-');
aDate2 = fixInt(aDate2);
//计算相差的年份
/*aTmp = [aDate1[0]+1,fixZero(aDate1[1]),fixZero(aDate1[2])];
while(aTmp.join('-') <= sDate2){
y++;
aTmp[0]++;
}*/
y = aDate2[0] - aDate1[0];
if( sDate2.replace(aDate2[0],'') < sDate1.replace(aDate1[0],'')){
y = y - 1;
}
//计算月份
aTmp = [aDate1[0]+y,aDate1[1],fixZero(aDate1[2])];
while(true){
if(aTmp[1] == 12){
aTmp[0]++;
aTmp[1] = 1;
}else{
aTmp[1]++;
}
if(([aTmp[0],fixZero(aTmp[1]),aTmp[2]]).join('-') <= sDate2){
m++;
} else {
break;
}
}
//计算天数
aTmp = [aDate1[0]+y,aDate1[1]+m,aDate1[2]];
if(aTmp[1] > 12){
aTmp[0]++;
aTmp[1] -= 12;
}
while(true){
if(aTmp[2] == getMonthDays(aTmp[0],aTmp[1])){
aTmp[1]++;
aTmp[2] = 1;
} else {
aTmp[2]++;
}
sTmp = ([aTmp[0],fixZero(aTmp[1]),fixZero(aTmp[2])]).join('-');
if(sTmp <= sDate2){
d++;
} else {
break;
}
}
return {y:y,m:m,d:d};
};
//获取两个日期之间的所有月份(包括区间)
function getMonthBetween(start, end) {//传入的格式YYYY-MM
var result = [];
var s = start.split("-");
var e = end.split("-");
var min = new Date();
var max = new Date();
min.setFullYear(s[0], s[1] * 1 - 1, 1);//开始日期
max.setFullYear(e[0], e[1] * 1 - 1, 1);//结束日期
var curr = min;
while (curr <= max) {
/**
* 单返回月份
*/
// var month = curr.getMonth();
// result.push(month + 1);
// curr.setMonth(month + 1);
/**
* 返回区间
*/
var month = curr.getMonth();
var str = curr.getFullYear()+'-'+(month+1);
var s = curr.getFullYear()+'-0';
if(str==s){
str = curr.getFullYear()+'-1';
}
//返回区间
result.push(str);
curr.setMonth(month + 1);
};
let arr = [];
result.forEach(v=>{
const day = utility.getLastDay(v);
arr.push(v.replace('-','年')+'月1日'+'-'+v.replace('-','年')+'月'+day+'日');
})
return arr;
// return result;//返回月份
};
//获取指定月份的最后一天
function getLastDay(date){
let nowyear = new Date(date).getFullYear();//取当前的年份
let nowmonth = new Date(date).getMonth()+1;//获取当前月份
let nextmonth = nowmonth++;//取下一个月的第一天,方便计算(最后一天不固定)
if(nowmonth>12){
nextmonth -= 12;//月份减
nowyear++;//年份增
};
var new_date = new Date(nowyear,nextmonth,1);//取当年当月中的第一天
return (new Date(new_date.getTime()-1000*60*60*24)).getDate();//获取当月最后一天日期
};
/**
* 将数字转化为大写金额
*/
function changeNumMoneyToChinese(money){
var cnNums = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); //汉字的数字
var cnIntRadice = new Array("", "拾", "佰", "仟"); //基本单位
var cnIntUnits = new Array("", "万", "亿", "兆"); //对应整数部分扩展单位
var cnDecUnits = new Array("角", "分", "毫", "厘"); //对应小数部分单位
var cnInteger = "整"; //整数金额时后面跟的字符
var cnIntLast = "元"; //整型完以后的单位
var maxNum = 999999999999999.9999; //最大处理的数字
var IntegerNum; //金额整数部分
var DecimalNum; //金额小数部分
var ChineseStr = ""; //输出的中文金额字符串
var parts; //分离金额后用的数组,预定义
var Symbol="";//正负值标记
if (money == "") {
return "";
}
money = parseFloat(money);
if (money >= maxNum) {
alert('超出最大处理数字');
return "";
}
if (money == 0) {
ChineseStr = cnNums[0] + cnIntLast + cnInteger;
return ChineseStr;
}
if(money<0)
{
money=-money;
Symbol="负 ";
}
money = money.toString(); //转换为字符串
if (money.indexOf(".") == -1) {
IntegerNum = money;
DecimalNum = '';
} else {
parts = money.split(".");
IntegerNum = parts[0];
DecimalNum = parts[1].substr(0, 4);
}
if (parseInt(IntegerNum, 10) > 0) { //获取整型部分转换
var zeroCount = 0;
var IntLen = IntegerNum.length;
for (var i = 0; i < IntLen; i++) {
var n = IntegerNum.substr(i, 1);
var p = IntLen - i - 1;
var q = p / 4;
var m = p % 4;
if (n == "0") {
zeroCount++;
}
else {
if (zeroCount > 0) {
ChineseStr += cnNums[0];
}
zeroCount = 0; //归零
ChineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
}
if (m == 0 && zeroCount < 4) {
ChineseStr += cnIntUnits[q];
}
}
ChineseStr += cnIntLast;
//整型部分处理完毕
}
if (DecimalNum != '') { //小数部分
var decLen = DecimalNum.length;
for (var i = 0; i < decLen; i++) {
var n = DecimalNum.substr(i, 1);
if (n != '0') {
ChineseStr += cnNums[Number(n)] + cnDecUnits[i];
}
}
}
if (ChineseStr == '') {
ChineseStr += cnNums[0] + cnIntLast + cnInteger;
} else if (DecimalNum == '') {
ChineseStr += cnInteger;
}
ChineseStr = Symbol +ChineseStr;
return ChineseStr;
};
/*
*js获取一段字符串中完整的url地址
*/
function httpString(s) {
//var reg = /(http:\/\/|https:\/\/)((\w|=|\?|\.|\/|&|-)+)/g;
//var reg = /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;
//var reg=/(http(s)?\:\/\/)?(www\.)?(\w+\:\d+)?(\/\w+)+\.(swf|gif|jpg|bmp|jpeg)/gi;
//var reg=/(http(s)?\:\/\/)?(www\.)?(\w+\:\d+)?(\/\w+)+\.(swf|gif|jpg|bmp|jpeg)/gi;
//var reg= /^((ht|f)tps?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?$/;
//v = v.replace(reg, "<a href='$1$2'>$1$2</a>"); //这里的reg就是上面的正则表达式
//s = s.replace(reg, "$1$2"); //这里的reg就是上面的正则表达式
try{
var reg= /(https?|http|ftp|file):\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]/g;
s = s.match(reg);
// console.log(s)
return s[0];
}catch(e){}
};
/**
* 多条件筛选
* condition:{name:'掌声',age:'13'}
* data:要筛选的数组
* 注意:此方式返回的数据是模糊数据,即包含的都算,例如:
* arr = [{name:'sales'},{name:'sales_bj'}];
* parm = {name:'sales'}
* 筛选结束返回为[{name:'sales'},{name:'sales_bj'}]
*/
function selectParams(condition, data){
return data.filter(item => {
return Object.keys(condition).every(key => {
return String(item[key]).toLowerCase().includes(
String(condition[key]).trim().toLowerCase()
)
})
})
};
/**
* 将obj对象参数拆分成get请求后的参数
*/
function splitObj(obj){
obj = JSON.stringify(obj);
if(obj=='{}'){
return '';
};
obj = obj.replace(/\{|\}|\'|\"+/g,'');
let arr = obj.split(',');
for(var i = 0;i<arr.length;i++){
arr[i] = arr[i].replace(/\:/g,'=') + '&';
};
let str = arr.join('');
str = str.slice(0,str.length-1);
str = '?' + str;
return str;
};