`
笨笨林
  • 浏览: 1627 次
  • 性别: Icon_minigender_1
  • 来自: 宜春
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

用JQuery写的日期时间选择函数

阅读更多

这些天想要一个日期控件。找了很久没找到合适的,要么功能不好,要么文件体积太大。于是就自己写了一个。但用起来感觉到有点不恰当的地方。现在发布出来,欢迎大家使用。同时也请提出宝贵的意见。

 

本控件特点:共有两个函数,一个调用函数,一个执行函数。总共代码5.1K左右。当然,是适当的去掉了空行后的。可以选择时间。

 

调用方法参考:

enable_selectdate(":text");      //将所有<input type="text" />的文本框添加日期选择控件

enable_selectdate("input[name='time1'],input[name='time2']");     //将 name为time1和time2的文本框添加日期选择控件。

 

欢迎各位拍砖。

 

function enable_selectdate(selector){
	$(selector).each(function(){
		$(this).bind("focus",function(){lxg_datepicker(this);});
	});
}
function lxg_datepicker(obj){
	var inputer=$(obj);
	var date_reg=/^[\d]{4}-[\d]{1,2}-[\d]{1,2}( [\d]{1,2}\:[\d]{1,2}\:[\d]{1,2})?$/;
	var t=inputer.val();var c_time=0;
	if(t.search(date_reg)==-1){
		t=new Date();
	}else{
		if(t.indexOf(' ')>0){
			t=t.split(' ');t=t[0].split('-').concat(t[1].split(':'));
			t=new Date(t[0],parseInt(t[1])-1,t[2],t[3],t[4],t[5]);
			c_time=1;
		}else{
			t=t.split("-");t=new Date(t[0],parseInt(t[1])-1,t[2]);
		}
	}
	var input_y=t.getFullYear();var input_m=t.getMonth();var input_d=t.getDate();
	var input_h=t.getHours();var input_mi=t.getMinutes();var input_s=t.getSeconds();
	var sd_y=input_y;var sd_m=input_m;
	var m_arr=new Array("01","02","03","04","05","06","07","08","09","10","11","12");
	if($("#date_dialog").length==0){
		var l='<div id="date_dialog" style="border:2px outset #eee;padding:5px;width:218px;position:absolute;z-index:11;background:#ccc;">';
		l+='<form><input type="button" style="width:23px;padding:0;" value="-" id="sd_dyear" /><input type="button" style="width:23px;padding:0;" value="+" id="sd_ayear" /> <select id="sd_select_year" style="width:52px;">';
		for(i=2020;i>=1970;i--){l+='<option value="'+i+'">'+i+'</option>';}
		l+='</select> <select id="sd_select_month" style="width:40px;">';
		for(i=0;i<12;i++){l+='<option value="'+i+'">'+m_arr[i]+'</option>';}
		l+='</select> <input type="button" style="width:23px;padding:0;" value="-" id="sd_dmonth" /><input type="button" style="width:23px;padding:0;" value="+" id="sd_amonth" />';
		l+='<div id="sd_table"></div>'
		l+='<div><div style="text-align:left;padding-bottom:5px;"><input type="checkbox" id="sd_addtime" />同时选择时间</div>';
		l+='<select id="sd_select_hour" style="width:38px;">';for(i=23;i>=0;i--)l+='<option value="'+i+'">'+i+'</option>';l+='</select>时';
		l+='<select id="sd_select_minute" style="width:38px;">';for(i=59;i>=0;i--)l+='<option value="'+i+'">'+i+'</option>';l+='</select>分';
		l+='<select id="sd_select_second" style="width:38px;">';for(i=59;i>=0;i--)l+='<option value="'+i+'">'+i+'</option>';l+='</select>秒';
		l+=' <input type="button" id="sd_cancle" value="取消" /></div>';
		l+='</form></div>';
		$("body").append(l);
		$("#sd_cancle").bind("click",function(){
			$("#date_dialog").hide();$("select").css("visibility","inherit");
		});
	}
	$("#sd_select_year,#sd_select_month,#sd_dmonth,#sd_amonth,#sd_dyear,#sd_ayear").unbind();
	var sd_year=$("#sd_select_year").val(input_y+'').bind("change",sd_show);
	var sd_month=$("#sd_select_month").val(input_m+'').bind("change",sd_show);
	if(c_time==1){$("#sd_addtime").attr("checked","checked");}else{$("#sd_addtime").attr("checked","");}
	var sd_hour=$("#sd_select_hour").val(input_h+'');
	var sd_minute=$("#sd_select_minute").val(input_mi+'');
	var sd_second=$("#sd_select_second").val(input_s+'');
	$("#sd_dyear").bind("click",{"m":-12},changeselect);$("#sd_ayear").bind("click",{"m":12},changeselect);
	$("#sd_dmonth").bind("click",{"m":-1},changeselect);$("#sd_amonth").bind("click",{"m":1},changeselect);
	function changeselect(event){
		var m=event.data.m;var t=new Date(sd_y,sd_m+m,1);sd_year.val(t.getFullYear()+'');sd_month.val(t.getMonth()+'');sd_show();
	}
	t=inputer.offset();
	$("#date_dialog").show().css({"left":t.left+"px","top":(t.top+inputer.height()+8)+"px","text-align":"center"});
	$("select").css("visibility","hidden");$("#date_dialog select").css("visibility","inherit");
	function sd_show(){
		sd_y=parseInt(sd_year.val());sd_m=parseInt(sd_month.val());
		t=new Date(sd_y,sd_m,1);sd_fwd=t.getDay();
		t=new Date(sd_y,sd_m+1,0);sd_mdays=t.getDate();
		$("#sd_table>table td").unbind();
		var s='<table border="0" cellspacing="0" width="208" cellpadding="3">';
		s+='<tr><th style="color:#f00;">日</th><th>一</th><th>二</th><th>三</th><th>四</th><th>五</th><th style="color:#f00;">六</th></tr>';
		if(sd_fwd>0){s+='<tr>';for(var j=0;j<sd_fwd;j++){s+='<td></td>';}}else{var j=0;}
		for(var i=1;i<=sd_mdays;i++,j++){
			if(j%7==6){s+='<td style="color:#f00;">'+i+'</td></tr>';}else{if(j%7==0){s+='<tr><td style="color:#f00;">'+i+'</td>';}else{s+='<td>'+i+'</td>';}}
		}
		if(j%7!=0){do{s+='<td></td>';j++;}while(j%7!=0);}
		s+='</tr></table>'
		$("#sd_table").html(s);
		$("#sd_table>table td,#sd_table>table th").css("background-color",'#ccc');
		$("#sd_table>table td").each(function(){
			e=$(this);
			if(e.html()!=""){
				e.css({"cursor":"pointer"}).bind("click",function(){
					t='';if($("#sd_addtime").attr("checked")==true&&(sd_hour.val()!="0"||sd_minute.val()!="0"||sd_second.val()!="0"))t=' '+sd_hour.val()+':'+sd_minute.val()+':'+sd_second.val();
					inputer.val(sd_y+'-'+(sd_m+1)+'-'+$(this).html()+t);$("#sd_cancle").click();
				});
				if(input_y==sd_y&&input_m==sd_m&&input_d==parseInt(e.html())){
					e.css({"background-color":"#fa6"});
				}else{
					e.bind("mouseover",function(){$(this).css("background-color","#bbb");}).bind("mouseout",function(){$(this).css("background-color","#ccc");});
				}
			}
		});
	}
	sd_show();
}

 

分享到:
评论
6 楼 笨笨林 2010-11-05  
多谢,现在改了一下,界面不打算改了。没有隐藏SELECT元素,增加点击控件以外的地方隐藏控件。
5 楼 jordan_micle 2010-10-08  
值得学习。
但是界面有点粗糙。而且一选择的时候页面其他的select元素都会隐藏??我在chrome下浏览的
4 楼 笨笨林 2010-10-07  
演示地址:http://www.0795fcw.com/houseadd.php
在表单尾部。
3 楼 風一樣的男子 2009-12-21  
没有 Demo 看效果啊?
2 楼 ustcfxx 2009-12-17  
期待Demo 
1 楼 笨笨林 2009-12-17  
JQuery1.3.2版本,在FF。IE6,IE7,IE8下测试通过。

相关推荐

    jQuery手机移动端日期时间选择插件

    "jQuery手机移动端日期时间选择插件"正是为了解决这个问题而诞生的。这个插件旨在提供一个直观、易用的日期和时间选择器,适用于手机和平板等移动设备的网页应用。 jQuery是一个广泛使用的JavaScript库,它简化了...

    jquery移动端日期选择插件

    3. mobiscroll:不仅支持日期选择,还支持时间选择和日期时间选择,有丰富的主题和自定义选项。 4. datetimepicker:基于jQuery UI的插件,提供日期和时间选择,可自定义样式和行为。 五、使用步骤 1. 引入jQuery库...

    jQuery移动端日期选择代码.zip

    这个“jQuery移动端日期选择代码”就是基于jQuery的一个插件,它为触摸设备提供了易于使用且界面友好的日期选择功能。 在实际应用中,日期选择器通常用于表单填写、日程管理、预订系统等场景,让用户能够方便地选取...

    jQuery日期时间范围选择插件设置日期范围选择代码

    本篇文章将深入探讨如何使用jQuery日期时间范围选择插件设置日期范围选择功能。 首先,我们需要了解一个常用的jQuery日期时间选择插件——`DateTimePicker`。这个插件允许用户方便地选择日期和时间范围,通常用于...

    jQuery日期时间范围选择插件.zip

    而"jQuery日期时间范围选择插件"则是利用jQuery的力量来实现一个功能强大的用户界面组件,特别适用于需要用户选择特定日期和时间范围的场景,如酒店预订系统。 这个插件名为daterangepicker.js,它的主要目标是提供...

    jquery时间和日期选择器的DEMO

    3. **格式化输出**:选择的时间会被格式化为标准的日期时间字符串,如"YYYY-MM-DD HH:MM:SS",以便于在后端处理或者显示在页面上。 4. **插件集成**:jQuery有很多流行的时间日期选择器插件,如`datetimepicker`、`...

    jQuery拖动滑块时间轴选择日期代码.zip

    《jQuery拖动滑块时间轴选择日期代码》 在前端开发中,用户界面的交互性和易用性至关重要。"jQuery拖动滑块时间轴选择日期代码"是一个实用的JavaScript插件,它允许用户通过拖动滑块在时间轴上直观地选择日期。这个...

    jQuery选择预约日期和时段代码

    在这个场景中,我们关注的是使用jQuery来实现移动端的预约日期和时段选择功能,这通常涉及到用户界面(UI)设计和交互,以及前端时间处理。 首先,`index.html`文件是网页的主入口,它包含了页面的基本结构和引用...

    jquery 日期 时间 插件

    - jQuery日期时间插件是一种JavaScript组件,通过jQuery库来实现日期和时间的选择器,使得用户在网页上选择日期和时间变得更加直观和便捷。 2. **功能特性**: - **多语言支持**:许多插件允许开发者为不同国家和...

    超级实用的jquery选择时间日期控件

    &lt;title&gt;jQuery日期时间选择器 &lt;script src="https://code.jquery.com/jquery-3.6.0.min.js"&gt;&lt;/script&gt; &lt;script src="path/to/your/plugin/file.js"&gt;&lt;/script&gt; $(document).ready(function() { $("#...

    jquery 时间选择控件

    "jQuery时间选择控件"是jQuery生态中的一个重要组件,主要用于用户界面中方便用户输入或选择日期和时间。这类控件通常提供友好的交互方式,提升用户体验,尤其在需要用户输入特定日期或时间的场合。 描述中提到的这...

    DateTimePicker:jQuery日期和时间神器

    - **初始化插件**:在需要添加日期时间选择器的元素上,使用jQuery选择器并调用`datetimepicker()`方法初始化插件,例如: ```javascript $('#yourElementId').datetimepicker({ // 配置选项 }); ``` - **...

    jQuery时间日期选择器代码日历插件

    这段代码会在文档加载完成后,为ID为`datePicker`的元素添加一个日期时间选择器,格式为年-月-日,语言设置为简体中文。 以上就是关于"jQuery时间日期选择器代码日历插件"的一些核心知识点,理解和掌握这些内容,...

    jQuery时间日期拖动设置选择器.zip

    总的来说,《jQuery时间日期拖动设置选择器》是现代Web开发中一款高效、易用的日期时间选择工具,它可以极大地提升网站或应用的交互性和可用性。然而,考虑到浏览器兼容性问题,开发者在使用时需要权衡并做好相应的...

    jQuery日期时间选择器插件

    以上就是关于jQuery日期时间选择器插件的基本介绍和使用方法,它在网页表单、事件预订、日程管理等场景中有着广泛的应用。通过深入理解和熟练运用这类插件,开发者可以提高网页的用户体验和交互效果。

    DateTimePicker:jQuery日期和时间插件

    总之,DateTimePicker是jQuery生态中的一个重要组件,它通过简洁的API和灵活的配置,为网页开发带来了便利的日期时间选择功能。通过理解和熟练使用这个插件,开发者可以提升项目的用户体验和功能完整性。

    DateTimepicker - jQuery日期时间选择插件

    DateTimepicker 是一个基于 jQuery 的强大日期时间选择插件,它为网页应用提供了用户友好的界面,使得用户可以方便地选择日期和时间。这个插件在网页表单中尤其有用,可以提升用户体验,使得输入日期和时间变得更加...

    jQuery手机移动端日期时间选择代码

    本文将详细解析一款兼容PC端和移动端的jQuery日期时间选择代码,帮助开发者更好地理解和应用。 首先,jQuery库作为JavaScript的扩展框架,以其简洁的API和强大的功能深受开发者喜爱。在移动端,jQuery同样能提供...

    jQuery日期选择插件

    本篇文章将深入探讨jQuery日期选择插件的相关知识点,包括其功能、使用方法、常见插件及其优点。 ### 1. jQuery日期选择器功能 jQuery日期选择插件通常提供以下功能: - **日期格式化**:允许用户自定义日期显示...

    jquery mobile datepicker 手机端日期选择器

    《jQuery Mobile Datepicker:手机端日期选择器深度解析》 在移动应用开发中,日期选择器是一个不可或缺的组件,它提供了用户友好的界面,让用户能够方便地选择日期。jQuery Mobile Datepicker 是一个专为手机端...

Global site tag (gtag.js) - Google Analytics