积跬步,聚小流------关于手机号,前端应该注意哪些

现代的网上商城中越来越多的开始使用手机注册,方便,快捷,然后作为前端,也就不可避免的要在界面上碰到关于手机号的问题,今天小小总结一下该注意哪些问题,又该来如何实现呢?

1、实现效果

先把自己当前做出来的效果传上来看下:

(备注:这里的手机号码是我随便输了一个,如果真有这个号码受到了骚扰,别怪我啊,噗噗...)

2、需要注意的问题

这里我们来简单罗列下需要注意的问题吧:

* input输入框,只能输入数字;

* 输入过程中下方同步显示所输入的内容;

* 判断输入手机号是否格式正确;

* 判断手机归属地;

3、实现步骤

1、页面结构

<div class="phone_num">
                    <label class="float_left">手机号码:</label>
                    <input type="text" 
                    <span style="white-space:pre">	</span>onkeyup="javascript:ckphone(this)"
                             onafterpaste="javascript:ckphone(this)" 
                             <span style="white-space:pre">	</span>onchange="javascript:ckphonelast(this)" 
                                <span style="white-space:pre">	</span>onblur="javascript:ckphonelast(this)" />
                    <div class="show_phone_num">
                       <span style="white-space:pre">	</span><span id="phone_showtip"><!--155 77777 6666--></span> 
                        <span class="phone_from_where" id="phone_belong">
                        <span style="white-space:pre">	</span><!--(广西 中国联通)-->
                        </span>
                    </div>
</div>

2、样式

然后我们先假定存在默认的手机号和默认的手机归属地,获得上方的样式

.phone_num {
		position: relative;
		height: 50px;
		line-height: 50px;
		margin-bottom: 30px;
}
.phone_num input {
		width: 300px;
		height: 30px;
		padding: 5px 5px;
		float: left;
}
.phone_num span {
		display: inline-block;
		margin-left: 30px;
}
.show_phone_num {
		width: 500px;
		height: 40px;
		line-height: 40px;
		position: absolute;
		left: 75px;
		color: #ff5205;
		font-size: 18px;
		font-weight: bold;
		bottom: -30px;
}
.phone_from_where {
		display: inline-block;
		font-size: 14px;
		color: #000;
		height: 30px;
		line-height: 30px;
		margin-left: 60px;
		font-weight: 100;
		position: relative;
}

3、对手机号的操作

通过结构代码我们可以简单发现我们相应的操作,比方说录入代码或者粘贴代码等等时

function ckphonelast(n){
	if(n.value.length!=11){
		$('#phone_showtip').html("请输入正确的手机号");
	}else{
		var partten = /^1[3,5,8]\d{9}$/;
		if(partten.test(n.value)){
				ckbelong(n.value);
		}else{//正则判定不是手机号
			$('#phone_showtip').html("请输入正确的手机号");
		}
	}
}
function ckphone(n){
	$('#phone_showtip').html("");
	$("#phone_belong").html("");
	var ck=false;
	n.value=n.value.replace(/\D/g,'');
	if(n.value.length>11){       //只能录入11位数字
		n.value=n.value.substring(0,11);
	}
	if(n.value.length<=3){      //为了显示时前面的表格
		$('#phone_showtip').html(n.value);
	}
	if(n.value.length>3){
		$('#phone_showtip').html(n.value.substring(0,3)).append(" ").append(n.value.substring(3));
	}
	if(n.value.length>7){
		$('#phone_showtip').html(n.value.substring(0,3)).append(" ").append(n.value.substring(3,7)).append(" ").append(n.value.substring(7));
	}
	if(n.value.length==11){
		var partten = /^1[3,5,8]\d{9}$/;
		if(partten.test(n.value)){
				ck=true;
		}else{//正则判定不是手机号
			$('#phone_showtip').html("请输入正确的手机号");
		}
	}
	if(ck){
		ckbelong(n.value);
	}
}

这里简单解释下以上代码:

首先:用正则表达式来获取只能录入数字的时候,我们通常是这样做的:

 <input type="text"
           onkeyup="this.value=this.value.replace(/\D/g,'')"
           onafterpaste="this.value=this.value.replace(/\D/g,'')" />

而在这里我们只是将this对象直接传递过来,然后进行操作。这样我们已经保证录入数据都为数字,我们就完成了第一步,然后进行第二步操作,同步录入信息。

我们首先观察录入信息和同步的显示的不同点,显示的时候是以3/4/4的格式进行显示的,中间以空格进行间隔,这样我们就要在操作的同时,在相应的位置添加空格。

第三:我们通过正则表达式来判定手机号格式是否正确,以保证你录入的数字是一个手机号,而不是你的银行卡密码。

最后,我在这里利用淘宝的接口来判定手机的归属地,当然如果真正用到项目中肯定要调用自己的接口,不过只用来显示的话,这也无可厚非啦。

function ckbelong(phone){
	 $.ajax({
        <span style="white-space:pre">	</span> type: "get",
         <span style="white-space:pre">	</span>url: 'http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel='+phone,
        <span style="white-space:pre">	</span> dataType: "jsonp",
	<span style="white-space:pre">	</span> jsonp: "callback",
        <span style="white-space:pre">	</span> success: function(n){
		<span style="white-space:pre">	</span>$("#phone_belong").html(data.province+" "+data.catName);
        <span style="white-space:pre">	</span> },
        <span style="white-space:pre">	</span> error:function (data){
               <span style="white-space:pre">		</span>$("#phone_belong").html("该手机号存在问题");
         <span style="white-space:pre">	</span> }
         });
}

我们来简单看下它的返回值都是什么呢?

这样我们就得到了相应的手机号码归属地啊,从而显示在界面上就可以了啦。

啦啦啦,这样手机这一环节暂时就结束了啊,收获还不小呢,哈哈哈哈...

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-07 22:07:39

积跬步,聚小流------关于手机号,前端应该注意哪些的相关文章

不积跬步无以至千里----高度自适应的textarea

在某个项目里面,有这样的一个小需求. textarea的高度自适应,当高度高于300px之后,textarea高度不再增高,出滚动条.当高度小于某个高度例如80px的时候,高度不再变小. 其实这个需求在很多地方都有出现过,例如微博的评论框,还有各种评论框. 谈不上什么有难度的技术,写下来当一个小插件积累. <!doctype html> <html> <head> <meta charset="utf-8"> <title>高

技术成长-不积跬步无以至千里

走在开发的道路上,你会发现越走路越长,越走路上的坑越多.本人是想在成长的道路上多踩一些坑的,踩的坑越多,遇到问题解决速度越快.坑多了,可能自己都记不住了,就需要记一记,有些时候你遇到的坑采用的解决办法并不是最优解,所有需要拿出来跟小伙伴一起分享分享你的经验. 记录到比如印象笔记或者有道云笔记里,或者自己的一个文件夹里,不过,个人经验,记在文件夹后很少有人再去看,还是记在印象笔记或者有道云笔记里,可以帮助自己随时翻看.现在的流程是重要的时候记录在有道云笔记上,做个索引,然后印象笔记记录的是我再找对

积跬步,聚小流-------几种方法实现分割线

其实这个问题想了实现了有一段时间了,只是单纯自己想了个办法简单实现了效果,没想出太多办法来,最关键的是,我也不知道这原来是叫"分割线",只知道是什么样,连搜都不着知道怎么搜,赶巧今天碰到了,就学习了下,先来描绘下要实现的"分割线"效果. 对,就是这个效果,记住了,这叫"分割线"... 最开始反应过来的是层叠起来实现效果,也是之前一直在用的方法 <hr width="80%"/> <div style=&quo

积跬步,聚小流------Bootstrap学习记录(3)

响应式作为Bootstrap的一大特色.栅格系统可谓是功不可没,既然如此,那我们就来看一下栅格系统是怎样帮助bootstrap实现响应式布局的呢? 1.什么是栅格系统 我们能够从Bootstrap的官网上找到比較官方的回答:Bootstrap提供了一套响应式.移动设备优先的流失栅格系统,随着屏幕或视口(viweport)的添加,系统会自己主动分为最多12列. 它包括了易于使用的提前定义类,还有强大的mixin用于生成更具语义的布局. 这样的说法是比較精准并且明了的.可是还能够更通俗一点的来解释:

积跬步,聚小流------oracle便捷修改整行数据

随着知识了解的越来越多,也越来越多的发现了自己的不足,简单记录下这次学到的知识吧. 尽管项目中都是用的oracle,但是实际上对于oracle的应用却不是很足,比方说,如果我查一个表中的数据,例: 这时候的这两条数据是我录入的测试数据,现在我想进行删除操作,可能我很快就能想到相应的sql语句: delete from arc_tobaccotechnician where name like '%是否%' 首先说这是对的,并且是非常快捷的,但是如果测试数据的共同点并不是那么好找呢,或者其它sql

积跬步,聚小流------oracle快捷添加测试数据

前一阵子在实施中发现问题,需要当时进行修改,而因为数据库中数据是真实数据,不能进行修改,否则会出大纰漏吧,于是添加测试数据来方便修改,而单个添加效率太低下了,所以解决的办法就是以真实的数据为模板增添新方便删除的数据即可,就像将2014年的数据复制一份只将年份进行修改,删除的时候讲这个不存在的年份数据删除即可. 相信大家很容易会想到这个方法,也很容易做出答案,举个例子: 看这个表,因为主键中都是以当年年份开头的,同时年度也是当年年份,这样我们就可以进行添加修改: 假使说这个表格存在如下列: btf

积跬步,聚小流------具有滑动效果的导航

导航栏是网站的一个重要部分,具有良好动态效果的导航栏无疑会给网站添色不少,而水平动态导航栏就是其中一种,我一直非常喜欢,当然它分为很多种,这里先来看其中一种效果. 1.效果样例 这个图片相信关注过这种效果导航栏的人都很熟悉了,我也是从这个入手慢慢入门滴... 至于样式结构这里就不详述了,相信都不会怵头,这里上下jquery效果的代码: ; (function ($) { $.extend({ 'nicenav': function (con) { con = typeof con === 'nu

积跬步,聚小流-------js实现placeholder的效果

前几天在"技术问答"上问了问题,然后有回复一句话就给概括了:placeholder的效果,不得不说,了解的多了才能说起来言简意赅,用最简单的语言描述最清晰的表达. 但是placeholder属于html5新添加的属性,兼容性还存在问题,查阅思考后,用js实现了它的实现效果. 先来看一下实现效果: 输入密码的时候 这就实现了效果了啊,然后呢,你发现上下图的区别了么,是不是一下子就想到了实现的方法,是的,就这么简单,来简单说一下是实现的原理: 在"登录邮箱"下,放两个i

积跬步,聚小流-------简单说配置环境变量

知其然,不如知其所以然,这个道理其实很多人都懂,只是得到鱼简单,而学会渔就要付出代价了,终究不是那么简单的,可能这就叫做成长吧. 看过很多关于java的培训书籍,像什么从入门到精通,像什么21天学会等等,事实上我也是从这个开始接触java的,就像开了一扇门,从此一发不可收拾的沦陷. 记得书中最开始都会讲JDK的安装和环境变量的配置,于是就会照搬书上的方法,安装,然后配置JAVA-HOME,CLASSPATH,PATH,然后我去编写自己的第一个"hello world",还能模糊想起最初