js实用小函数收集

 

格式化金额

var val='212312.235423'
var rex = /\d{1,3}(?=(\d{3})+$)/g;
val.replace(/^(-?)(\d+)((\.\d+)?)$/, function (s, s1, s2, s3) {
          return '$' + s1 + s2.replace(rex, '$&,') + s3;
 })

 

/**获取数组指定元素的下标*/
Array.prototype.indexOf = function(val) { 
    for (var i = 0; i < this.length; i++) { 
        if (this[i] == val) return i; 
    } 
    return -1; 
};
/**删除数组中的某个元素*/
Array.prototype.remove = function(val) { 
    var index = this.indexOf(val); 
    if (index > -1) { 
        this.splice(index, 1); 
    } 
}; 

 

 

 

 

数组去重
Array.from(new Set(arr));

数组排序
//降序排序
functionn sortArray(a, b) {
  return b - a;
}
arr.sort(sortArray);

//json降序排序,按其中某个属性排序,比如ID
function sortByDesc(a,b){
  return b.id-a.id;
}



 

 

字符串去重
function
removeDuplicates(arr) { var temp = {}, r = []; for (var i in arr) temp[arr[i]] = true; for (var k in temp) r.push(k); return r; }

 

 

 

创建表单,并以post方式提交 
$(".details").click(function(){ var type=$(this).attr("type"); var financingAmount=$(this).attr("financingAmount"); var url = "/supplierAccountCenterController/suppliereceivingadd"; //首先创建一个form表单 var tempForm = document.createElement("form"); tempForm.id="tempForm1"; tempForm.method="post"; tempForm.action=url; tempForm.target="_blank"; //创建input标签,用来设置参数 var hideInput = document.createElement("input"); hideInput.type="hidden"; hideInput.name= "type"; hideInput.value= type; //将input表单放到form表单里 tempForm.appendChild(hideInput); //将此form表单添加到页面主体body中 document.body.appendChild(tempForm); tempForm.submit(); document.body.removeChild(tempForm); }

 

$.ajaxSetup({cache:false}); 设置ajax非缓存机制

 

 

 

校验手机号码正则: new RegExp(/^((13[0-9])|(14[4,7])|(15[^4,\D])|(17[6-8])|(18[0-9]))(\d{8})$/).test(mobile)

身份证验证
function checkIdcard(num) { num = num.toUpperCase(); // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。 if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) { // alert('输入的身份证号长度不对,或者号码不符合规定!\n15位号码应全为数字,18位号码末位可以为数字或X。'); ymPrompt.alert('请输入正确的身份证号码!', 400, 200, '失败', null); return false; } // 校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。 // 下面分别分析出生日期和校验位 var len, re; len = num.length; if (len == 15) { re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/); var arrSplit = num.match(re); // 检查生日日期是否正确 var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]); var bGoodDay; bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4])); if (!bGoodDay) { // alert('输入的身份证号里出生日期不对!'); ymPrompt.alert('请输入正确的身份证号码!', 400, 200, '失败', null); return false; } else { // 将15位身份证转成18位 // 校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。 var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); var nTemp = 0, i; num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6); for (i = 0; i < 17; i++) { nTemp += num.substr(i, 1) * arrInt[i]; }   num += arrCh[nTemp % 11];   return true; } } if (len == 18) { re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/); var arrSplit = num.match(re); // 检查生日日期是否正确 var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]); var bGoodDay; bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3]))&& (dtmBirth.getDate() == Number(arrSplit[4])); if (!bGoodDay) { // alert(dtmBirth.getYear()); // alert(arrSplit[2]); // alert('输入的身份证号里出生日期不对!'); ymPrompt.alert('请输入正确的身份证号码!', 400, 200, '失败', null);   return false; } else { // 检验18位身份证的校验码是否正确。 // 校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。 var valnum; var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4','3', '2'); var nTemp = 0, i; for (i = 0; i < 17; i++) {   nTemp += num.substr(i, 1) * arrInt[i]; } valnum = arrCh[nTemp % 11]; if (valnum != num.substr(17, 1)) {   // alert('18位身份证的校验码不正确!应该为:' + valnum);   ymPrompt.alert('请输入正确的身份证号码!', 400, 200, '失败', null);   return false; }   return true; } }   return false; } 邮箱校验正则表达式 : /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/ 银行账号校验 function luhmCheck1(bankno) { var lastNum = bankno.substr(bankno.length - 1, 1);// 取出最后一位(与luhm进行比较) var first15Num = bankno.substr(0, bankno.length - 1);// 前15或18位 var newArr = new Array(); for ( var i = first15Num.length - 1; i > -1; i--) { // 前15或18位倒序存进数组   newArr.push(first15Num.substr(i, 1)); } var arrJiShu = new Array(); // 奇数位*2的积 <9 var arrJiShu2 = new Array(); // 奇数位*2的积 >9 var arrOuShu = new Array(); // 偶数位数组 for ( var j = 0; j < newArr.length; j++) { if ((j + 1) % 2 == 1) {// 奇数位 if (parseInt(newArr[j]) * 2 < 9)   arrJiShu.push(parseInt(newArr[j]) * 2); else   arrJiShu2.push(parseInt(newArr[j]) * 2); } else   // 偶数位   arrOuShu.push(newArr[j]); } var jishu_child1 = new Array();// 奇数位*2 >9 的分割之后的数组个位数 var jishu_child2 = new Array();// 奇数位*2 >9 的分割之后的数组十位数 for ( var h = 0; h < arrJiShu2.length; h++) {   jishu_child1.push(parseInt(arrJiShu2[h]) % 10);   jishu_child2.push(parseInt(arrJiShu2[h]) / 10); } var sumJiShu = 0; // 奇数位*2 < 9 的数组之和 var sumOuShu = 0; // 偶数位数组之和 var sumJiShuChild1 = 0; // 奇数位*2 >9 的分割之后的数组个位数之和 var sumJiShuChild2 = 0; // 奇数位*2 >9 的分割之后的数组十位数之和 var sumTotal = 0; for ( var m = 0; m < arrJiShu.length; m++) {   sumJiShu = sumJiShu + parseInt(arrJiShu[m]); } for ( var n = 0; n < arrOuShu.length; n++) {   sumOuShu = sumOuShu + parseInt(arrOuShu[n]); } for ( var p = 0; p < jishu_child1.length; p++) {   sumJiShuChild1 = sumJiShuChild1 + parseInt(jishu_child1[p]);   sumJiShuChild2 = sumJiShuChild2 + parseInt(jishu_child2[p]); } // 计算总和 sumTotal = parseInt(sumJiShu) + parseInt(sumOuShu) + parseInt(sumJiShuChild1) + parseInt(sumJiShuChild2); // 计算Luhm值(模10算法) var k = parseInt(sumTotal) % 10 == 0 ? 10 : parseInt(sumTotal) % 10; var luhm = 10 - k; if (lastNum == luhm) {   return true; } else {   return false; } } 1、全局替换字符 str.replace(/\toreplacestr/g, '' replacestr");

 

 

 

posted @ 2018-01-27 20:16  秋水秋色  阅读(121)  评论(0编辑  收藏  举报