欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Js编写注册信息的年月日插件

程序员文章站 2022-04-20 23:49:12
...

@Js编写注册信息的年月日插件

Js编写注册信息的年月日插件

在注册信息的时候,会有填写生日的一项,一般情况下都是用下拉菜单,也有少部分网站用<input type=“date” …>对象,但是这个对象有的浏览器是不支持显示的。所以需要用到<select…>对象制作一个下拉列表,这也是大多数网站使用的方法。

难点

在使用编写一个下拉列表很简单,通过循环放进年月日就好。但是其中包含了一个用户体验的问题:在闰年选择29天的时候,你要是选错了年份,改成了平年,还是29天,那就不对了,或者你选择了大月的31日,但你改成了小月的,小月是没有31日的,所以需要做出判断。大月改成小月的时候,日子要跟着变,闰年改成平年的时候,2月的日子要变。难点就这些,上才艺。

注释

var cj代表了日期的下标。最后再改动月份的时候,可以让不用动的日子不动,需要动的日子自动变成1。由于onload不好使,我使用了一个button来初始化。fb()代表了button程序,fy,fm,fd分别代表了,鼠标点击年月日的时候,他们的动作。

js程序

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>

<body>
<style>
	#year{
		font-size: 23px;
		width: 120px;
		height: 40px;
		border: 2px solid #3934E7;
		border-radius: 7px;
		overflow: hidden;
	}
	#mouth{
		font-size: 23px;
		width: 120px;
		height: 40px;
		border: 2px solid #3934E7;
		border-radius: 7px;
		overflow: hidden;
	}
	#date{
		font-size: 23px;
		width: 120px;
		height: 40px;
		border: 2px solid #3934E7;
		border-radius: 7px;
		overflow: hidden;
	}
	#b1{
		background-color:#2722E9;
		color: white;
		font-size: 30px;
		width: 120px;
		height: 50px;
		border: 2px solid white;
		border-radius: 12px;
		overflow: hidden;
	}
	#div1{
		//border: 1px solid black;
		width: 700px;
		height:300px;
		position: absolute;
		left:400px;
		top:200px;
	}
	</style>
<div id="div1">
	<form id="form1" name="form1" style="font-size: 32px;font-family: 微软雅黑;">日历:
	<select id="year" onInput="fy()"></select>
	<select id="mouth" onInput="fm()"></select>
	<select id="date" onInput="fd()"></select>
	<input type=button value="start" id="b1" onClick="fb()">
	</form>
</div>

<script>
	var cj=0;
	function fy(){
		var year=document.getElementById("year").value*1;
		var mouth=document.getElementById("mouth").value*1;
		var date=document.getElementById("date");
		date.length=0;
		if(mouth==2)
		{
			if(year%4==0)
			{
				for(i=1;i<=29;i++)
				{
					var d=new Option(i+" 日",i);
					date.add(d);
				}
			}
			else
			{
				for(i=1;i<=28;i++)
				{
					var d=new Option(i+" 日",i);
					date.add(d);
				}
			}
		}
		if(mouth==1||mouth==3||mouth==5||mouth==7||mouth==8||mouth==10||mouth==12)
		{
			
			for(i=1;i<=31;i++)
			{
				var d=new Option(i+" 日",i);
				date.add(d);
			}
		}
		if(mouth==4||mouth==6||mouth==9||mouth==11)
		{
			for(i=1;i<=30;i++)
			{
				var d=new Option(i+" 日",i);
				date.add(d);
			}
		}
		
		if(year%4!=0&&cj==28)
			cj=0;
	}
	function fb(){
		var year=document.getElementById("year");
		var mouth=document.getElementById("mouth");
		var date=document.getElementById("date");
		var i;
		for(i=1960;i<=2050;i++)
		{
			var y=new Option(i+" 年",i);
			year.add(y);
		}
		for(i=1;i<=12;i++)
		{
			var m=new Option(i+" 月",i);
			mouth.add(m);
		}
		for(i=1;i<=31;i++)
		{
			var d=new Option(i+" 日",i);
			date.add(d);
		}
	}
	function fm(){
		var year=document.getElementById("year").value*1;
		var mouth=document.getElementById("mouth").value*1;
		var date=document.getElementById("date");
		date.length=0;
		if(mouth==2)
		{
			if(year%4==0)
			{
				for(i=1;i<=29;i++)
				{
					var d=new Option(i+" 日",i);
					date.add(d);
				}
			}
			else
			{
				for(i=1;i<=28;i++)
				{
					var d=new Option(i+" 日",i);
					date.add(d);
				}
			}
		}
		if(mouth==1||mouth==3||mouth==5||mouth==7||mouth==8||mouth==10||mouth==12)
		{
			
			for(i=1;i<=31;i++)
			{
				var d=new Option(i+" 日",i);
				date.add(d);
			}
		}
		if(mouth==4||mouth==6||mouth==9||mouth==11)
		{
			for(i=1;i<=30;i++)
			{
				var d=new Option(i+" 日",i);
				date.add(d);
			}
		}
		
		if(mouth==2||mouth==4||mouth==6||mouth==9||mouth==11&&cj==30)
		   cj=0;
		if(mouth==2&&cj==29)
		   cj=0;
		
		
		document.getElementById("date").selectedIndex=cj;
	}
	function fd(){
		cj=document.getElementById("date").selectedIndex;
	}
	</script>
</body>
</html>

Js编写注册信息的年月日插件
成品截图在上。