`
wangflood
  • 浏览: 41586 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

DIY一个JS年月calendar

    博客分类:
  • web
阅读更多

写一个项目,遇到需求:只输入年月。我在网上找不半天的JS控件,无果。TX哥们让我自已写个,好吧。那就写试试。

不要紧,一写就是两天。居然都没成功。晕。。。。。。上代码。下面。

 

 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>MyCalendar</title>
	<script type="text/javascript" src="jquery-1.6.min.js"></script>
	<script type="text/javascript">
		$(function(){
		
			function YMCal(obj){
				this.output_ym="";
				this.cur_year=new Date().getFullYear();
				this.start_year=1936;
				this.sl_year=0;
				this.sl_month=12;
				this.init=function(){
					for(var i=this.start_year;i<=this.cur_year;i++){
							$("<option value='"+i+"年'>"+i+"年</option>").appendTo("#ym_year");
						}
						if(obj.val()!=null&&obj.val()!=""){
							this.sl_year=obj.val().substr(0,4);
							this.sl_month=obj.val().substring(5,obj.val().length-1);
						}else{
							this.sl_year=this.cur_year-24;
						}
						$("#ym_month table tr td").removeClass("m_select");
						$("#ym_month table tr td:eq("+(this.sl_month-1)+")").addClass("m_select");
						$("#ym_year option[value='"+this.sl_year+"年']").attr("selected", true);
						$("#ym_calendar").css("margin-left",obj.position().left-6);
						$("#ym_calendar").show();
						$("#ym_calendar").insertAfter(obj);
						
						$("#ym_month table tr td").hover(function(){
							$(this).addClass("focus");
						},function(){
							$(this).removeClass("focus");
						}).click(function(){
							this.sl_month=$(this).text();
							this.sl_year=$("#ym_year").find("option:selected").text();
							this.output_ym=this.sl_year+this.sl_month;
							obj.val(this.output_ym);
							$("#ym_calendar").hide();
					});
					obj.blur(function(){
						$("#ym_calendar").hide();
					});
				};
			}
			
			
			$("#myCalendar").click(function(){
				var ymCal= new YMCal($(this));
				ymCal.init();
			});
			$("#myCalendar2").click(function(){
				var ymCal= new YMCal($(this));
				ymCal.init();
			});
		});
	</script>
	<style type="text/css">
	#ym_calendar {
		z-index: 99;
		position: absolute;
		width: 170px;
		color: black;
		border: #A9A9FF 1px solid;
		background: white;
		padding: 1px;
	}
	#ym_calendar .title {
		width: 100%;
		background: green;
		clear: both;
		color: white;
		font-size: 12px;
		letter-spacing: 1px;
		padding: 2px 0 2px 0;
		text-align: center;
		font-weight: bold;
		
		
	}
	#ym_calendar .title #year_text{
		margin-right: 20px;
	}
	
	#ym_calendar #ym_year{
		margin-right:0px;
	}
	#ym_calendar #ym_month{
		width: 100%;
		height: 90px;
		background: #F9F7FF;
		margin-top: 5px;
	}

	 #ym_calendar #ym_month table tr td.focus {
		background: white;
		border: solid 1px #A9A9FF;
	}
	 #ym_calendar #ym_month table tr td.m_select {
		font-weight: bold;
		cursor: default;
	}
	#ym_calendar #ym_month table tr td{
		padding: 2px;
		text-align: center;
		color: #3F419E;
		cursor: pointer;
		font-family: Arial, Helvetica, sans-seri
	}
	
	</style>
</head>
<body>
	<div id="ym_calendar"  style="display: none;">
		<div class="title" ><span id="year_text">教育年份</span>
		<select id="ym_year"></select>
		</div>
		<div id="ym_month">
			<table  style="width: 100%">
				<tr>
					<td width="25%">1月</td>
					<td width="25%">2月</td>
					<td width="25%">3月</td>
					<td width="25%">4月</td>
				</tr>
				<tr>
					<td width="25%">5月</td>
					<td width="25%">6月</td>
					<td width="25%">7月</td>
					<td width="25%">8月</td>
				</tr>
				<tr>
					<td width="25%">9月</td>
					<td width="25%">10月</td>
					<td width="25%">11月</td>
					<td width="25%">12月</td>
				</tr>
			</table>
		</div>
	</div>
	
		<input type="text" id="myCalendar"  readonly="readonly" value="1989年12月" />&nbsp;&nbsp;&nbsp;&nbsp;
		<input type="text" id="myCalendar2"  readonly="readonly" value="1987年3月" />
		<br/><input/>
		
</body>
</html>
 

 


 1.我希望点击的时候,改变input域的值。之前写的乱的时候,click事件还有效,后来封装    了个YMCal Object click事件没效果。

2.点击input域时,弹出ym_calendar div日历。这个div要与input域左对齐,正下方。覆盖   在其中层之上。似乎对齐在ie下有些不兼容。

3.如果一个页面里有二个以上的地方需要这个日历,但是同一时刻只弹出一个ym_calendar     div,所以好的设计应该使页面内只有一个ym_calendar div,而不是clone。同一个div,   与两个input域的关系,传参得注意了。我的click事件有时候会有效,然后点击的时候,   两个input域同时改变值。

4.我想应该有更好的封装方式。使调用的时候像jquery ui datepicker                    一样,$.datepicker({param:param1});


呵呵。js没学好。高手教教我。把这个项目整完。我留点时间写写我接下来的四次面试。

  • 大小: 14.4 KB
分享到:
评论
1 楼 yxbwzx 2011-08-15  
不错嘛,能自己写,不过这种东西很好找,搜搜WebCalendar
支持年月,年月日,可以自定义date format

相关推荐

    日历年月日时分秒控件myCalendar.js

    `myCalendar.js`的核心是通过JavaScript实现一个交互式的日期和时间选择器,支持年、月、日、小时、分钟和秒的选择。该控件具有良好的可定制性,开发者可以根据需求调整样式和功能,使其与项目中的其他元素保持一致...

    calendar JS 日期选择插件

    - **直观界面**:Calendar JS提供了一个简洁且易于理解的界面,使得用户在选择日期时能快速定位。 - **多语言支持**:该插件支持多种语言,可以方便地切换,满足全球化网站的需求。 - **自定义样式**:通过CSS,...

    JS 年月选择控件

    在网页开发中,用户界面(UI)...总的来说,JS年月选择控件是一个结合了HTML、CSS和JavaScript技术的实例,它通过提升用户体验展示了前端开发的魅力。在实践中,不断学习和优化这些技能,可以使你的网页应用更加出色。

    自定义日期控件(Calendar加年月选择asp.net C#)

    VS2008自带的Calendar只能一个月一个月的切换,你要选几年前的就受不子,于是本人经过三天的学习制作终于完成了二个DropDownList(年与月的选择)与Calendar互动的绑定,并做成控件,可供初学控件的朋友学习,并提出...

    原生js月份/年月选择器

    织织网应实际使用开发的一个js年月选择器,采用原生js开发,兼容IE、FF(Firefox)、谷歌(Chrome),其他杂牌浏览器都是基于这三种内核的,就不一一测试了。 插件非常的简单,完全开源,可以做二次开发。 因为很...

    js年月组件

    总的来说,"js年月组件"是前端开发中的一个实用工具,它结合了JavaScript的DOM操作、事件处理、数据处理和UI设计等多个方面,是提升用户体验的重要组成部分。通过学习和实践此类组件的开发,开发者可以提高自己的...

    js时间控件大全 只显示年月

    在JavaScript编程中,时间控件是一种...它包含了两个不同特性的年月选择器,一个是通用型,一个是专门针对年月的。通过学习和使用这些控件,开发者可以提升用户体验,同时也能深入理解JavaScript日期处理和DOM交互。

    js年月日三级联动代码

    在JavaScript编程中,"年月日三级联动"通常是指在一个网页表单中,用户选择年份后,月份和日期会自动根据所选年份更新其可选项,形成一个连续的下拉选择效果。这种功能常见于日期选择器,能够提高用户体验,避免用户...

    js年月日联动

    纯js年月日联动,无刷新下拉框,符合日期规则,手动更改起止年

    JS年月选择控件

    通过以上步骤,开发者能够轻松地在项目中集成一个功能完备且符合设计需求的年月选择控件。这样的控件不仅提高了用户体验,也使得数据输入更加标准化,便于后端处理和存储。在实际开发过程中,还应考虑浏览器兼容性、...

    javascript控制年月日输入

    本文将详细解析如何使用JavaScript实现这一功能,并结合提供的描述和标签,探讨一个自定义的函数以及一个额外的验证函数。 首先,我们要明白JavaScript中的日期处理主要依赖于`Date`对象。我们可以创建一个新的`...

    只有年或年月的js控件

    通常,这种控件会展示一个下拉菜单,菜单中包含一系列的年份选项,用户可以通过滚动或搜索功能找到所需的年份。在处理历史数据、年龄输入或者设置长期计划的场景下,年份选择控件非常有用。例如,在填写出生日期时,...

    vue日期控件实现可以选择年月或者选择年月日

    在Vue.js框架中,开发一个可以灵活选择年月或年月日的日期控件是一项常见的需求。这个控件应提供用户友好的界面,允许用户轻松地选择特定的时间范围。在这个场景下,我们可以利用Element UI库,它为Vue.js提供了丰富...

    年月js控件,没有日

    标题中的“年月js控件,没有日”指的是一个JavaScript组件,它专门用于显示和处理年份和月份的选择,而不包含日期部分。这样的控件在某些场景下可能会有用,例如只需要用户选择年份和月份而不需要精确到日期的场合。...

    js年月日周时间范围控件

    在这个场景中,我们讨论的是一个特定的JS组件,即“js年月日周时间范围控件”。这个控件为用户提供了一种方便的方式来选择日期、月份、周和具体时间,并且允许用户设定周的起始日。 首先,这个控件提供了年、月、日...

    Java实现按年月打印日历功能【基于Calendar】

    Java实现按年月打印日历功能是Java语言中一个常见的功能需求,涉及到日期运算和Calendar类的使用。下面将详细介绍Java实现按年月打印日历功能的相关知识点。 Calendar类简介 Calendar类是Java语言中一个用于日期和...

    时间JS年月日星期 农历 时分秒

    很强大的一段JS 显示 年月日星期 农历 时分秒。比平时只有年月日星期时分秒的多了农历。很强大的一段JS 显示 年月日星期 农历 时分秒。比平时只有年月日星期时分秒的多了农历。

    js获取年月日和当月的天数

    ### JavaScript 获取年月日及当月天数 在JavaScript中,日期对象提供了丰富的API来处理时间与日期。本文将详细介绍如何使用JavaScript获取当前日期的年、月、日以及当月的总天数。 #### 一、JavaScript日期对象...

    js年月控件(无日)

    最终与同事一样倒腾出一个来。  js年月控件(无日)  使用了jquery,共3个文件,使用说明内附。 下载地址: http://u.115.com/file/f388284d67   广告一下我的QQ群,谢绝只加群不说话的人加入。 WEB前端群:...

    js 实现年月日选择

    js 实现年月日下拉选择 包括计算闰年 功能比较全,只是下拉条的高度没有控制

Global site tag (gtag.js) - Google Analytics