wdatepicker关联日期处理

news/2024/7/10 22:40:04 标签: javascript, date, jquery

wdatepicker官方网站http://my97.net/index.asp

我在项目中需要让用户按年、月、日选择一个时间段,比如在按月时间段中选择了2016年5月,则两个输入框中就分别显示 2016-05-01 和 2016-06-01

1.引用jquery和wdatepicker

<script type="text/javascript" src="${ctx}/js/jquery-3.1.1.min.js"></script>
<script type="text/javascript" src="${ctx}/js/jquery-1.8.3.js"></script>
<script type="text/javascript" src="${ctx}/js/calendar/WdatePicker.js"></script>
在这里我jquery 我用的是1.8.3,wdatepicker是4.72。

只使用最新的jquery3.1.1有问题,日期选择框弹不出来。具体支持到jquery的那个版本没有试验。

这里还引用了jquery3.1.1是兼容我部分代码使用了on这个新的绑定事件的方法(有些地方的html标签是通过jquery生成的,没有用live方法去动态绑定,新jquery中用on代替了live方法)

2.html代码部分

<div id="setting_data_time_free">
	<input type="text" id="data_time_start" value="2016-10-15"/>
	-
	<input type="text" id="data_time_end" value="2016-11-15"/>
</div>
<div id="setting_data_time_format" style="display:none;">
	<input type="button" id="data_time_format_year" class="button" value="按年"/>
	<input type="button" id="data_time_format_month" class="button" value="按月"/>
	<input type="button" id="data_time_format_day" class="button" value="按日"/>
</div>
3.javascript脚本部分

<script type="text/javascript">
		// 将 realDate格式化输出
		function fmtRealDate(realDate){
			var str = "";
			var split = "-";
			str += realDate.y;
			str +=split;
			if(realDate.M<10){
				str += "0"+realDate.M;
			}else{
				str += realDate.M;
			}
			str +=split;
			if(realDate.d<10){
				str += "0"+realDate.d;
			}else{
				str += realDate.d;
			}
			return str;
		}

		// 年份选择后,设置关联结束时间
		function pickedYear(){
			var realDate = $dp.$D('data_time_start',{y:1});
			// $dp.$D只影响了年份,还需要将月、日设置为1
			realDate.M=1;
			realDate.d=1;
			$("#data_time_end").val(fmtRealDate(realDate));
			console.log("free year picked:"+$("#data_time_start").val());
			monitor.getData();
		}
		// 月份选择后,设置关联结束时间
		function pickedMonth(){
			var realDate = $dp.$D('data_time_start',{M:1});
			// $dp.$D只影响了月份,还需要将日设置为1
			realDate.d=1;
			$("#data_time_end").val(fmtRealDate(realDate));
			console.log("free month picked:"+$("#data_time_start").val());
			monitor.getData();
		}
		// 日期选择后,设置关联结束时间
		function pickedDay(){
			var realDate = $dp.$D('data_time_start',{d:1});
			$("#data_time_end").val(fmtRealDate(realDate));
			console.log("free day picked:"+$("#data_time_start").val());
			monitor.getData();
		}
		
		$("#data_time_format_year").on("click",function(){
			WdatePicker({el:'data_time_start',dateFmt:'yyyy-01-01',onpicked:pickedYear});
		});
		$("#data_time_format_month").on("click",function(){
			WdatePicker({el:'data_time_start',dateFmt:'yyyy-MM-01',onpicked:pickedMonth});
		});
		$("#data_time_format_day").on("click",function(){
			WdatePicker({el:'data_time_start',dateFmt:'yyyy-MM-dd',onpicked:pickedDay});
		});
</script>
以上代码有几处需要注意的地方(我踩过的坑)

第一:设置dateFmt时,使用‘yyyy-01-01’可以只选择年份,很不错的功能(月份同理)

第二:设置日期选择后的触发事件方法,要用onpicked(有3类,有兴趣去看官网说明)

第三:wdatepicker的全局方法$dp.$D设置相对偏移时间格式。

第四:wdatepicker的全局方法$dp.$D返回的结果是个类,没法直接显示为字符串时间结果。所有我用fmtRealDate函数去转换了一下(realData类的参数,用浏览器的开发模式下查看一下就知道了)。



                

http://www.niftyadmin.cn/n/1851272.html

相关文章

用CAML Query查询是/否(复选框)字段

在列表中添加字段&#xff0c;选择“是/否(复选框)”&#xff0c;命名为“IsEnable”&#xff0c;然后我想用Caml Query去过滤列表项。我用的U2U Caml Query Builder. 生成的查询语句是 <Where> <Eq> <FieldRef NameIsEnable /> <Value…

USB2.0速度识别--区分低速-高速-全速

转载自: http://blog.csdn.net/cescf4/article/details/8601457 http://blog.csdn.net/yanlai20/article/details/12967015 USB2.0是向下兼容USB1.X的&#xff0c;即USB2.0支持高速&#xff0c;全速&#xff0c;低速的USB设备&#xff08;HIGH-SPEED,FULL-SPEED,LOW-SPEED&…

linux svn 多项目设置

1.下载安装svn yum install subversion 2.建立目录结构/var/svn/repos /var/svn为我们的管理根目录 /var/svn/repos为我们存放项目目录 3.配置权限文件 为了一套权限配置管理多个项目,我们先建立两个项目示范 将conf下的配置文件拷贝一份到目录/var/svn下。 这三个文件详…

s8550引脚图与电路图汇总分析

s8550作为音频放大器&#xff0c;应用于收录机、电动玩具等电子产品。三极管8550是一种常用的普通三极管。 它是一种低电压&#xff0c;大电流&#xff0c;小信号的PNP型硅三极管。最大集电极电流为0.5 A。 S8550参数如下&#xff1a; 1、VCBO -30 V 2、VCEO -20 V 3、VEBO -5 …

修改CentOS Linux服务器的主机名

1. vi /etc/hosts i键&#xff0c;修改主机名&#xff0c;esc键&#xff0c;:x键保存退出 2. vi /etc/sysconfig/network i键&#xff0c;修改主机名(HOSTNAME)&#xff0c;esc键&#xff0c;:x键保存退出 3. 输入以下命令&#xff1a; hostname 新主机名 然后用ssh重新登…

更改VS code Jupyter 插件的默认快捷键

更改vscode 中Jupyter插件的默认快捷键&#xff0c;解放插入空行的系统快捷键 替换Jupyter默认快捷键 更改vscode 中Jupyter插件的默认快捷键&#xff0c;解放插入空行的系统快捷键打开keyboard shortcuts 设置方法一方法二 更换快捷键 end Jupyter 插件很好的在VS code中集成了…

Socket 套接字的系统调用

socket 结构/*** struct socket - general BSD socket* state: socket state (%SS_CONNECTED, etc)* type: socket type (%SOCK_STREAM, etc)* flags: socket flags (%SOCK_NOSPACE, etc)* ops: protocol specific socket operations* file: File back pointer for gc* …

设计模式之适配器(adapter)模式

适配器模式把一个类的接口转换成客户希望的另一个接口&#xff0c;使得原本由于接口不兼容而不能一起工作 的那些类可以一起工作。 具体代码如下&#xff1a; //客户期望的接口 class Target { public virtual void Request(){}; }//需要适配的类 class Adaptee …