日期选择器:jquery datepicker的使用

2012年04月08日 21:05helloweba.com 作者:月光光 标签:jQuery 

在jquery ui中,提供了一个非常实用的日期选择器:datepicker,使用它能非常方便的展现日历中的日期,灵活配置相关选项,包括日期格式、范围等。我们经常在WEB应用中用到datepicker,比如要求用户输入日期进行相关查询的。我们很早之前就应用datepicker到很多项目中,今天整理成文与大家分享。

日期选择器:jquery datepicker的使用

准备工作

首先请到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)
声明:本文为原创文章,helloweba.net和作者拥有版权,如需转载,请注明来源于helloweba.net并保留原文链接:https://www.helloweba.net/javascript/168.html

25条评论

  • 你就是个傻子[猪头]

  • 那个msie的问题,是因为这个插件需要用到jQuery,而jQuery1.9.*之后的就没有用$.brower这个对象了,所以报错。我查了很多文档,找到个解决方法,加如下代码,手动定义brower.
    jQuery.browser = {};
    (function () {
    jQuery.browser.msie = false;
    jQuery.browser.version = 0;
    if (navigator.userAgent.match(/MSIE ([0-9]+)\./)) {
    jQuery.browser.msie = true;
    jQuery.browser.version = RegExp.$1;
    }
    })();

  • 没用 一点反应都没有 神马东西

  • 我也遇到这问题了,你是怎么解决的呢,知道的话加我扣1258822751告诉我谢谢

  • msie总是说不能读取属性的msie定义,这是因为什么呀

  • 给力给力,终于找到个给力的

  • css文件夹里少了份main.css啊,跪求

  • css文件夹里少了份main.css啊,跪求

  • 都引了但是点击input没出来怎么回事

  • 怎么修改面板上月份的显示格式

  • jquery 版本只能在9一下么?

  • 很是不错。。[呵呵]

  • 怎么让设置的这些清空,就是当我在打开页面时候,出现的时间是未选中的

  • 下载下没有你载入的这个jquery-ui-datepicker.js啊,帮忙回答一下吧

  • 谢谢分享

  • 感谢风向

  • 多出的层是因为调用的时候div没显示东西但是占了位置,设置成隐藏即可。

  • 版主***多少,非常崇拜,想一起发展互联网。PHP程序员

  • 不好意思,原来只需要表单 post即可,我的程序出现了的问题。不是日历选择器的问题。日历选择器,可以直接获取到提交的格式化表单数据

  • 如何获取日期选择器的值,并且插入数据库?