實用的 JavaScript 方法

工具類

獲取瀏覽器 Cookie

/**
 * 獲取瀏覽器 Cookie
 * @param {String} name 要獲取的 Cookie 名
 * @return {String} 獲取到的 Cookie 值
 */
function getCookie(name) {
	var cookieList = document.cookie.split("; ");
	var cookieJson = {};
	for (var index in cookieList) {
		cookieJson[cookieList[index].split("=")[0]] = cookieList[index].split("=")[1];
	}
	return cookieJson[name]
}

獲取 Url 參數

/**
 * 獲取 Url 參數
 * @param {String} variable 待獲取參數名
 * @return {String} 獲取到的參數值
 */
function getQueryVariable(variable) {
	var query = window.location.search.substring(1);
	var vars = query.split("&");
	for (var i = 0; i < vars.length; i++) {
		var pair = vars[i].split("=");
		if (pair[0] == variable) {
			return pair[1];
		}
	}
	return (false);
}

格式化時間對象

/**
 * 格式化時間
 * @param {String} fmt 格式
 * @param {Object} date 待格式時間對象
 * @return {String} 格式化後的時間字符串
 */
function dateFormat(fmt, date) {
	var ret;
	const opt = {
		"y+": date.getFullYear().toString(), // 年
		"M+": (date.getMonth() + 1).toString(), // 月
		"d+": date.getDate().toString(), // 日
		"h+": date.getHours().toString(), // 時
		"m+": date.getMinutes().toString(), // 分
		"s+": date.getSeconds().toString() // 秒
	};
	for (var k in opt) {
		ret = new RegExp("(" + k + ")").exec(fmt);
		if (ret) {
			fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
		};
	};
	return fmt;
}

生成一個 UUID

/**
 * 生成一個UUID
 * @return {String} 一個新的 UUID
 */
function createUUID() {
	function S4() {
		return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
	}
	return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
}

生成一個隨機整數

/**
 * 生成一個隨機整數
 * @param {Int} n 隨機數取值區間最小值
 * @param {Int} m 隨機數取值區間最大值
 */
function createRandom(n, m) {
	n = Number(n);
	m = Number(m);
	if (n > m) {
		var temp = n;
		n = m;
		m = temp;
	}
	return Math.floor(Math.random() * (m - n) + n);
}

生成一個隨機驗證碼

/**
 * 生成一個隨機驗證碼
 * @param {Int} len 驗證碼長度
 */
function createCode(len) {
	var codeStr = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
	var str = '';
	var getRandom = function(n, m) {
		n = Number(n);
		m = Number(m);
		if (n > m) {
			var temp = n;
			n = m;
			m = temp;
		}
		return Math.floor(Math.random() * (m - n) + n);
	}
	for (var i = 0; i < len; i++) {
		var ran = getRandom(0, codeStr.length);
		str += codeStr.charAt(ran);
	}
	return str
}

驗證類

驗證郵箱

/**
  * 驗證郵箱
  * @param {String} mail 待驗證郵箱
  * @return {Boolean} true.格式正確 false.格式錯誤
  */
 function validateMail(mail) {
 	var strRegex = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/;
 	if (strRegex.test(mail)) {
 		return true;
 	} else {
 		return false;
 	}
 }

驗證手機號碼

/**
 * 驗證手機號碼
 * @param {String} phone 待驗證號碼
 * @return {Boolean} true.格式正確 false.格式錯誤
 */
function validatePhone(phone) {
	var phoneReg = /^1[3-578]\d{9}$/;
	if (phoneReg.test(phone)) {
		return true;
	} else {
		return false;
	}
}

驗證身份證號碼

/**
 * @param {String} cardId 待驗證身份證號碼
 * @return {Boolean} true.格式正確 false.格式錯誤
 */
function validateIdCard(idCode) {
	// 加權因子
	var weight_factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
	// 校驗碼
	var check_code = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];

	var code = idCode + "";
	var last = idCode[17];

	var seventeen = code.substring(0, 17);

	// 判斷最後一位校驗碼是否正確
	var arr = seventeen.split("");
	var len = arr.length;
	var num = 0;
	for (var i = 0; i < len; i++) {
		num = num + arr[i] * weight_factor[i];
	}

	var resisue = num % 11;
	var last_no = check_code[resisue];

	// 校驗格式
	/*
	 *第一位不可能是0
	 *第二位到第六位可以是0-9
	 *第七位到第十位是年份,所以七八位爲19或者20
	 *十一位和十二位是月份,這兩位是01-12之間的數值
	 *十三位和十四位是日期,是從01-31之間的數值
	 *十五,十六,十七都是數字0-9
	 *十八位可能是數字0-9,也可能是X
	 **/
	var idcard_patter =
		/^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X])$/;

	// 判斷格式是否正確
	var format = idcard_patter.test(idCode);

	// 返回驗證結果,校驗碼和格式同時正確纔算是合法的身份證號碼
	return last === last_no && format ? true : false;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章