关于电话号码的分割(包括显示与输入两方面)

--------------------------------- 题记

最近完善的的,挺好用的,话不多说,直接上代码。


--------------------------------- 代码


var tinyUtil = {
		/*
		 * 电话号码验证分割(输入)
		 * 注:传参时注意使用 --> newMobile : $("#newMobile").val().replace(/-/g, ''), 去除分割符号
		 */
		phoneNumSegmentInput : function(target) {
			var validate = function(obj, phoneNum) {
				//手机分割
				var checkPhoneNum = /^1[3|4|5|8][0-9]\d{1}$/;
				if (checkPhoneNum.test(phoneNum)) {
					$(obj).val(phoneNum.substring(0, 3) + "-" +phoneNum.substring(3, phoneNum.length));
					return ;
				}
				checkPhoneNum = /^1[3|4|5|8][0-9]-\d{5}$/;
				if (checkPhoneNum.test(phoneNum)) {
					$(obj).val(phoneNum.substring(0, 8) + "-" + phoneNum.substring(8, phoneNum.length));
					return ;
				}
				checkPhoneNum = /^1[3|4|5|8][0-9]-\d{4}-\d{5}$/;
				if (checkPhoneNum.test(phoneNum)) {
					$(obj).val(phoneNum.replace(/-/g, ''));
					return ;
				}
				//手机撤回
				checkPhoneNum = /^1[3|4|5|8][0-9]\d{8}$/;
				if (checkPhoneNum.test(phoneNum)) {
					$(obj).val(phoneNum.substring(0, 3)
									+ "-" + phoneNum.substring(3, 7)
									+ "-" + phoneNum.substring(7, phoneNum.length));
					return ;
				}
				if ((phoneNum.length == 4 ||phoneNum.length == 9)
						&& phoneNum.substring(phoneNum.length - 1, phoneNum.length) == '-') {
					$(obj).val(phoneNum.substring(0, phoneNum.length - 1));
					return ;
				}
				//座机分割
				checkPhoneNum = /^0[1|2]\d{2}$/;
				if (checkPhoneNum.test(phoneNum) && phoneNum.length == 4) {
					$(obj).val(phoneNum.substring(0, 3) + "-" +phoneNum.substring(3, phoneNum.length));
					return ;
				}
				checkPhoneNum = /^0[1|2]\d-\d{9}$/;
				if (checkPhoneNum.test(phoneNum) && phoneNum.length == 13) {
					$(obj).val(phoneNum.replace(/-/g, ''));
					return ;
				}
				checkPhoneNum = /^0[3|4|5|6|7|8|9]\d{3}$/;
				if (checkPhoneNum.test(phoneNum) && phoneNum.length == 5) {
					$(obj).val(phoneNum.substring(0, 4) + "-" +phoneNum.substring(4, phoneNum.length));
					return ;
				}
				checkPhoneNum = /^0[3|4|5|6|7|8|9]\d{2}-\d{9}$/;
				if (checkPhoneNum.test(phoneNum) && phoneNum.length == 14) {
					$(obj).val(phoneNum.replace(/-/g, ''));
				}
				//座机撤回
				checkPhoneNum = /^0[1|2]\d{9}$/;
				if (checkPhoneNum.test(phoneNum)) {
					$(obj).val(phoneNum.substring(0, 3)
								+ "-"
								+ phoneNum.substring(3, phoneNum.length));
				}
				checkPhoneNum = /^0[3|4|5|6|7|8|9]\d{10}$/;
				if (checkPhoneNum.test(phoneNum)) {
					$(obj).val(phoneNum.substring(0, 4)
							+ "-"
							+ phoneNum.substring(4, phoneNum.length));
				}
				if (phoneNum.substring(phoneNum.length -1, phoneNum.length) == '-') {
					if (phoneNum.length == 4) {
						$(obj).val(phoneNum.substring(0, 3));
					}
					if (phoneNum.length == 5) {
						$(obj).val(phoneNum.substring(0, 4));
					}
				}
			};
			//正常按键处理
			$(target).keyup(function() {
				var phoneNum = $(this).val();
				//数字和长度验证
				if (!/^[\d|-]*$/.test(phoneNum) || phoneNum.length > 15) {
					$(this).val(phoneNum.substring(0, phoneNum.length - 1));
				}
				//拆分
				validate(this, phoneNum);
			});
			//持续按下不放处理
			$(target).keypress(function() {
				var phoneNum = $(this).val();
				//拆分
				validate(this, phoneNum);
			});
		},
		/*
		 * 电话号码分割(显示)for single target
		 */
		phoneNumSegmentShowSingleton : function(target) {
			var phoneNum = $(target).text();
			//手机分割
			var checkPhoneNum = /^1[3|4|5|8]\d{9}$/;
			if (checkPhoneNum.test(phoneNum)) {
				$(target).text(phoneNum.substring(0, 3)
								+ "-" + phoneNum.substring(3, 7)
								+ "-" + phoneNum.substring(7, phoneNum.length));
				return ;
			}
			//座机分割
			checkPhoneNum = /^0[1|2]\d{9}$/;
			if (checkPhoneNum.test(phoneNum)) {
				$(target).text(phoneNum.substring(0, 3)
							+ "-"
							+ phoneNum.substring(3, phoneNum.length));
			}
			checkPhoneNum = /^0[3|4|5|6|7|8|9]\d{10}$/;
			if (checkPhoneNum.test(phoneNum)) {
				$(target).text(phoneNum.substring(0, 4)
						+ "-"
						+ phoneNum.substring(4, phoneNum.length));
			}
		},
		/*
		 * 电话号码分割(显示) for table
		 * tdNum:电话号码在某tr中的第tdNum个位置的td
		 */
		phoneNumSegmentShowTable : function(target, tdNum) {
			$(target).find("tr").each(function(index) {
				if (index != 0) {
					$(this).find("td").each(function(i) {
						var phoneNum = $(this).text();
						var tdObj = this;
						$(tdNum).each(function(index) {
							if (i == $(tdNum).get(index)) {
								//手机分割
								var checkPhoneNum = /^1[3|4|5|8]\d{9}$/;
								if (checkPhoneNum.test(phoneNum)) {
									$(tdObj).text(phoneNum.substring(0, 3)
											+ "-" + phoneNum.substring(3, 7)
											+ "-" + phoneNum.substring(7, phoneNum.length));
									return ;
								}
								//座机分割
								checkPhoneNum = /^0[1|2]\d{8,9}$/;
								if (checkPhoneNum.test(phoneNum)) {
									$(tdObj).text(phoneNum.substring(0, 3)
											+ "-"
											+ phoneNum.substring(3, phoneNum.length));
									return ;
								}
								checkPhoneNum = /^0[3|4|5|6|7|8|9]\d{9,10}$/;
								if (checkPhoneNum.test(phoneNum)) {
									$(tdObj).text(phoneNum.substring(0, 4)
											+ "-"
											+ phoneNum.substring(4, phoneNum.length));
									return ;
								}
							}
						});
					});
				}
			});
		}
};


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值