excel2013日期选择器(日期选择器:jquery datepicker的使用)
在jquery ui中 ,提供了一个非常实用的日期选择器:datepicker ,使用它能非常方便的展现日历中的日期 ,灵活配置相关选项 ,包括日期格式 、范围等 。我们经常在WEB应用中用到datepicker ,比如要求用户输入日期进行相关查询的 。我们很早之前就应用datepicker到很多项目中 ,今天整理成文与大家分享 。
demo http://www.helloweba.com/demo/datepicker/
download http://www.helloweba.com/demo/downzip/datepicker.rar
查看演示DEMO下载源码
查看演示DEMO下载源码
准备工作
首先请到jqueryui.com官网下载datepicker插件代码 ,注意官网提供了整个jquery ui的所有插件下载 ,但是您可以选择其中几个用到的插件下载 ,本文中只用到datepicker ,所以只选择下载jquery ui核心代码和datepicker代码 。你可以直接点击本文上面的Download下载按钮下载demo源码包 ,其中就包括了datepicker插件源码 。
HTML
首先在head之间引入jquery库文件和datepicker插件以及相关css 。
<script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/jquery-ui-datepicker.js"></script> <link rel="stylesheet" type="text/css" href="css/jquery-ui.css" />然后在body间加入一个输入框 。
<input type="text" id="date_1" />Javscript
调用datepicker非常简单 ,直接使用以下代码就可以实现:
$(function(){ $("#date_1").datepicker(); });这样,单击输入框的时候会自动弹出一个日期选择器 ,选中日期后 ,自动关闭选择器,并在输入框中显示选中的日期 。
选项及事件使用说明
datepicker提供了丰富的选项设置事件方法调用 ,笔者先将经常用到的相关属性和方法整理成表格 ,方便查询和使用 。
选项 描述 默认值 altField 将选择的日期同步到另一个域中 ,配合altFormat可以显示不同格式的日期字符串 。demo altFormat 当设置了altField的情况下 ,显示在另一个域中的日期格式 。 appendText 在日期插件的所属域后面添加指定的字符串 。 buttonImage 设置可以用来点击弹出日历的按钮图片 ,如果非空 ,则按钮的文本将成为alt属性 ,不直接显示。demo buttonImageOnly 设置为true时 ,图片将作为按钮可以点击触发弹出日历 false buttonText 设置触发按钮的文本内容 。 ... changeMonth 设置是否允许通过下拉框列表选取月份 。 false changeYear 设置是否允许通过下拉框列表选取年份。 false closeText 设置关闭按钮的文本内容 ,此按钮需要通过showButtonPanel参数的设置才显示 。 Done constrainInput 如果设置为true ,则约束当前输入的日期格式 。 true currentText 设置当天按钮的文本内容 ,此按钮需要通过showButtonPanel参数的设置才显示 。 Today dateFormat 设置日期字符串的显示格式 。demo mm/dd/yy dayNames 设置一星期中每天的名称 ,从星期天开始 。此内容用于dateFormat时显示,以及日历中当鼠标移至行头时显示 。 [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday] dayNamesMin 设置一星期中每天的缩语 ,从星期天开始 ,此内容用于dateFormat时显示,以前日历中的行头显示 。 [Su, Mo, Tu, We, Th, Fr, Sa] dayNamesShort 设置一星期中每天的缩语 ,从星期天开始 ,此内容用于dateFormat时显示 ,以前日历中的行头显示 。 [Sun, Mon, Tue, Wed, Thu, Fri, Sat] defaultDate 设置默认加载完后第一次显示时选中的日期 。可以是Date对象 ,或者是数字(从今天算起 ,例如+7) ,或者有效的字符串(y代表年, m代表月, w代表周, d代表日, 例如:+1m +7d) 。 null duration 设置日期控件展开动画的显示时间 ,可选是"slow", "normal", "fast" ,代表立刻 ,数字代表毫秒数 。 normal firstDay 设置一周中的第一天 。星期天为0 ,星期一为1 ,以此类推。 0 gotoCurrent 如果设置为true ,则点击当天按钮时,将移至当前已选中的日期 ,而不是今天 。 false hideIfNoPrevNext 设置当没有上一个/下一个可选择的情况下 ,隐藏掉相应的按钮 。 false isRTL 如果设置为true,则所有文字是从右自左。 false maxDate 设置一个最大的可选日期 。可以是Date对象 ,或者是数字(从今天算起 ,例如+7) ,或者有效的字符串(y代表年, m代表月, w代表周, d代表日, 例如:+1m +7d) 。demo null minDate 设置一个最小的可选日期 。可以是Date对象 ,或者是数字(从今天算起 ,例如+7) ,或者有效的字符串(y代表年, m代表月, w代表周, d代表日, 例如:+1m +7d) 。 null monthNames 设置所有月份的名称 。 [January, February, March, April, May, June, July, August, September, October, November, December] monthNamesShort 设置所有月份的缩写 。 [Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec] navigationAsDateFormat 如果设置为true ,则formatDate函数将应用到 prevText,nextText和currentText的值中显示 ,例如显示为月份名称 。 false nextText 设置“下个月 ”链接的显示文字 。 Next numberOfMonths 设置一次要显示多少个月份 。如果为整数则是显示月份的数量 ,如果是数组 ,则是显示的行与列的数量 。demo 1 prevText 设置“上个月 ”链接的显示文字 。 Prev shortYearCutoff 设置截止年份的值 。如果是(0-99)的数字则以当前年份开始算起 ,如果为字符串 ,则相应的转为数字后再与当前年份相加。当超过截止年份时,则被认为是上个世纪 。 +10 showAnim 设置显示 、隐藏日期插件的动画的名称 。 show showButtonPanel 设置是否在面板上显示相关的按钮。 false showCurrentAtPos 设置当多月份显示的情况下 ,当前月份显示的位置 。自顶部/左边开始第x位 。 0 showMonthAfterYear 是否在面板的头部年份后面显示月份 。 false showOn 设置什么事件触发显示日期插件的面板 ,可选值:focus, button, both focus showOptions 如果使用showAnim来显示动画效果的话,可以通过此参数来增加一些附加的参数设置 。 {} showOtherMonths 是否在当前面板显示上 、下两个月的一些日期数(不可选) 。 false stepMonths 当点击上/下一月时 ,一次翻几个月 。 1 yearRange 控制年份的下拉列表中显示的年份数量 ,可以是相对当前年(-nn:+nn) ,也可以是绝对值 (-nnnn:+nnnn) -10:+10 beforeShow 在日期控件显示面板之前 ,触发此事件 ,并返回当前触发事件的控件的实例对象 。 function(input) beforeShowDay 在日期控件显示面板之前 ,每个面板上的日期绑定时都触发此事件 ,参数为触发事件的日期 。调用函数后 ,必须返回一个数组:[0]此日期是否可选(true/false) ,[1]此日期的CSS样式名称(""表示默认) ,[2]当鼠标移至上面出现一段提示的内容 。 function(date) onChangeMonthYear 当年份或月份改变时触发此事件 ,参数为改变后的年份月份和当前日期插件的实例 。 function(year, month, inst) onClose 当日期面板关闭后触发此事件(无论是否有选择日期) ,参数为选择的日期和当前日期插件的实例 。demo function(dateText, inst) onSelect 当在日期面板选中一个日期后触发此事件,参数为选择的日期和当前日期插件的实例 。 function(dateText, inst)http://www.jb51.net/article/27184.htm
jQuery是一款不可多得的非常优秀的javascript脚本开发库 ,而基于其上的很多插件也是非常规范和卓越的 ,如果错过这番美景真是太可惜了,比如datepicker这个插件。
一般MIS系统的前端 ,尤其是用户注册页面 ,都会有诸如“出身年月 ”的日期输入框 ,最简单的做法就是使用一个标签 ,这样做的弊端有很多:首先是与数据库字段类型的匹配 、其次是输入日期的合法性如“13月 ”或者闰年等等问题 ,如果深入下去还有非常多的地方值得推敲 。当前比较流行的做法是使用下拉菜单来构造 ,但是这样做无论交互性 、复杂度和可移植性都不尽如人意 ,因为至少需要构建3个联动的下拉菜单 ,需要自己编写大量的脚本处理日期合法性 。
datepicker带来了美好的春天 ,先看看使用默认样式时它的样子:完全GUI般的用户体验 ,炫目的动态展现效果 ,精确的日期控制和高度的灵活的参数配置 ,这一切使得datepicker受到众多开发者的青睐,其中包括大名鼎鼎的google ,在其google calendar项目中就使用了这个脚本 ,有兴趣可以去看看。顺便啰嗦一句,上图的默认效果 ,在javascript中 ,用户只需写一句话就可以实现了 ,怎么样 ,心动了吧 ,follow me:
1.下载jQuery核心文件就不用说了吧 ,datepicker是轻量级插件 ,只需jQuery的min版本就行了 ,然后下载datepicker(内含jQuery1.2.6_min) ,您也可以到官方网站下载:http://marcgrabanski.com/pages/code/jquery-ui-datepicker 。
2.在HTML中引用下载下来的两个js: <script language="javascript" src="js/jquery-1.2.6.min.js"></script> <script language="javascript" src="js/ui.datepicker.js"></script>3.在HTML中引入默认样式表文件 ,这个文件也在刚刚的压缩包中 ,如果在官网下载 ,首页就有这个CSS文件下载,也可选择其他皮肤的CSS:
<link rel="stylesheet" href="js/ui.datepicker.css" type="text/css" media="screen" title="core css file" charset="utf-8" />4.在HTML中插入文本域 ,最好设置成只读 ,不接受用户的手动输入,防止格式混乱 ,以id标记好 。
<input id="dateinput" type="text" readonly="readonly"/>5.编写js代码 ,实现最终效果 。
<script language="javascript"> $(document).ready(function() { $(#dateinput).datepicker(); }); </script>这样就基本完成一个日期输入文本域了 ,但是是英文的 ,根据不同的MIS系统 ,有的目标人群是上了年级的用户 ,建议将界面改成中文 ,可以如此操作 ,稍微改动一下刚刚的函数 ,like this:
<script language="javascript"> $(document).ready(function() { $(#dateinput).datepicker({ dateFormat: yy-mm-dd, //日期格式 ,自己设置 buttonImage: calendar.gif, //按钮的图片路径 ,自己设置 buttonImageOnly: true, //Show an image trigger without any button. showOn: both,//触发条件 ,both表示点击文本域和图片按钮都生效 yearRange: 1990:2008,//年份范围 clearText:清除,//下面的就不用详细写注释了吧,呵呵 ,都是些文本设置 closeText:关闭, prevText:前一月, nextText:后一月, currentText: , monthNames:[1月,2月,3月,4月,5月,6月,7月,8月,9月,10月,11月,12月], }); }); </script>OK ,大功告成,我根据自己的要求 ,写的页面的代码如下 ,仅供参考 ,自己尝试一下吧:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <link rel="stylesheet" href="js/ui.datepicker.css" type="text/css" media="screen" title="core css file" charset="utf-8" /> <script language="javascript" src="js/jquery-1.2.6.min.js"></script> <script language="javascript" src="js/ui.datepicker.js"></script> <script language="javascript"> $(document).ready(function() { var yearFrom=new Date().getYear()-60+1900; var yearTo=new Date().getYear()-18+1900; $(#dateinput).datepicker({ dateFormat: yy-mm-dd, buttonImage: calendar.gif, buttonImageOnly: true, showOn: both, yearRange: yearFrom+:+yearTo, clearText:清除, closeText:关闭, prevText:前一月, nextText:后一月, currentText: , monthNames:[1月,2月,3月,4月,5月,6月,7月,8月,9月,10月,11月,12月], }); }); </script> </head> <body> <input id="dateinput" type="text" readonly="readonly"/> </body> </html>创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!