jquery ui datepicker使用

在Web开发中,总会遇到需要用户输入日期的情况。一般都是提供一个text类型的input供用户输入日期。然而,这种方式,开发人员必须对用户输入的日期进行验证,判断其合法性。除此之外,用户输入日期也是一件不爽的事,如果用户可以直接选择日期,这两个问题都解决了。听起来很不错。实际上,很多开发者都是这么做的。

我们可以自己用javascript写一个日期选择控件,然而,想要写的很好、很漂亮却需要花不少时间和精力。jQuery有一个UI插件:datepicher,可以帮我们实现该功能,而且界面很漂亮。下面就学学如何使用它吧。

datepicher插件是jQuery UI的一个插件,它提供一个日期弹出窗口(或直接显示在页面),供用户选择日期。

datepicher插件的使用很简单,语法如下:

$("#regDate").datepicher(optional);

  其中optional是一个对象,该对象的每一个属性及含义可以参看官方文档:http://jqueryui.com/demos/datepicker/。在此,仅介绍一些常用的属性。

1、datepicher最简单的使用

Javascript代码

$("#regDate").datepicher();

  其中,regDate是页面日期输入框的ID属性值。

就这一句话,在日期输入框获得焦点时,就会弹出一个日期选择窗口。然而,这时候的日期选择窗口有很多不方便的地方,比如:只能一个月一个月的往前或往后,没有关闭按钮等。

2、配置datepicher

通过给datepicher设置一些属性值可以改变默认的显示。如:

$("#regDate").datepicker(
{
  showMonthAfterYear: true, // 月在年之后显示
  changeMonth: true,   // 允许选择月份
  changeYear: true,   // 允许选择年份
  dateFormat:‘yy-mm-dd‘,  // 设置日期格式
  closeText:‘关闭‘,   // 只有showButtonPanel: true才会显示出来
  duration: ‘fast‘,
  showAnim:‘fadeIn‘,
  showOn:‘button‘,   // 在输入框旁边显示按钮触发,默认为:focus。还可以设置为both
  buttonImage: ‘images/commons/calendar.gif‘,   // 按钮图标
  buttonImageOnly: true,        // 不把图标显示在按钮上,即去掉按钮
  buttonText:‘选择日期‘,
  showButtonPanel: true,
  showOtherMonths: true,
 //appendText: ‘(yyyy-mm-dd)‘,
});

  这个时候的日期选择就很方便了。可以自由选择年份和月份。

3、增加清除按钮和日期判断功能(增强版datepicher1.7.2)

datepicher1.7.2版本没有提供清除按钮,这让人有点遗憾。(好像之前的版本有提供)。没有清除按钮是很不方便的,特别是输入框获得焦点就弹出日期选择窗口的情况更是如此,因为这时想要清除输入框中的日期比较麻烦。在此推荐一位网友提供的增强版datepicher1.7.2。该增强版datepicher1.7.2不仅实现了清除按钮功能,而且增加了日期大小比较验证,比如:一个日期只能在另一个之后。可以访问该网址查看:http://www.cnblogs.com/yasin/archive/2009/07/10/1520736.html。这时datepicher的使用已经相当完美:

$(function()
{
$("#effDate").datepicker(
{
  showMonthAfterYear: true, // 月在年之后显示
  changeMonth: true,   // 允许选择月份
  changeYear: true,   // 允许选择年份
  dateFormat:‘yy-mm-dd‘,  // 设置日期格式
  showClearButton: true,
 //clearText: ‘清除‘,
  closeText:‘关闭‘,   // 只有showButtonPanel: true才会显示出来
  duration: ‘fast‘,
  showAnim:‘fadeIn‘,
  showOn:‘button‘,
  buttonImage: ‘images/commons/calendar.gif‘,
  buttonImageOnly: true,
  buttonText:‘选择日期‘,
  showButtonPanel: true,
  showOtherMonths: true,
 //appendText: ‘(yyyy-mm-dd)‘,
  onSelect: function(dateText, inst)    // 使结束时间大于开始时间
  {
  /**
    * 以下写法在IE中出现问题。
    * $(‘#expDate‘).datepicker(‘option‘, ‘minDate‘, new Date(dateText.replace(/-/g,‘,‘)));
    * 时,在结束(过期时间)选择时,年会没有,而且控制会失效。通过调试,发现new Date(dateText.replace(/-/g,‘,‘))
    * 返回的结果是NaN。说明Date对象不能这么构造(但是Firefox可以)
    */
   var arys = new Array();
   var arys = dateText.split(‘-‘);
    $(‘#expDate‘).datepicker(‘option‘, ‘minDate‘, new Date(arys[0],arys[1]-1,arys[2]));
  }
});      

$("#expDate").datepicker(
{
  showMonthAfterYear: true, // 月在年之后显示
  changeMonth: true,   // 允许选择月份
  changeYear: true,   // 允许选择年份
  dateFormat:‘yy-mm-dd‘,  // 设置日期格式
  showClearButton: true,  // 自定义的方法(1.7.2没有清除按钮)
 //clearText: ‘清除‘,    // 自定义的文本,在文档在有定义(js中)
  closeText:‘关闭‘,   // 只有showButtonPanel: true才会显示出来
  duration: ‘fast‘,
  showAnim:‘fadeIn‘,
  showOn:‘button‘,   // 在输入框旁边显示按钮触发,默认为:focus。还可以设置为both
  buttonImage: ‘images/commons/calendar.gif‘,   // 按钮图标
  buttonImageOnly: true,        // 不把图标显示在按钮上,即去掉按钮
  buttonText:‘选择日期‘,
  showButtonPanel: true,
  showOtherMonths: true,
 //appendText: ‘(yyyy-mm-dd)‘,
  onSelect: function(dateText, inst)
  {
  var arys = new Array();
  var arys = dateText.split(‘-‘);
   $(‘#effDate‘).datepicker(‘option‘,‘maxDate‘,new Date(arys[0],arys[1]-1,arys[2]));
  }
});
});

  4、国际化

datepicher提供了国际化的功能。只需将ui.datepicker-zh-CN.js导入页面即可。(或者导入jquery-ui-i18n.js,该文件包含了很多中语言)注意,如果想使用上面提到的增强版datepicher1.7.2,则需要下载作者提供的国际化文件。另外,如果用Eclipse之类的工具编码,注意用eclipse打开国际化文件看看,很有可能显示为乱码。只需要把文件的编码格式改为utf-8,然后用其他编辑工具,如editplus打开国际化文件,拷贝,粘贴覆盖eclipse中的,保存就OK了。

5、国际化为中文可能遇到的显示问题

在使用国际化同时启用changeYear和changeMonth后,两个select显示为两行,很不好看。找了好久,发现在官方提供的jquery-ui-1.7.2.custom.css中,应该作如下几处修改:

.ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; }

  应该改为

.ui-datepicker .ui-datepicker-title select {font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 47%;}
.ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: left; }

  

就OK了

6、换肤

jQuery UI预定义了很多皮肤,下载后,只需在页面引入相应皮肤的jquery-ui-1.7.2.custom.css可以实现换肤。如果给用户提供换肤功能,可以通过js控制,实现换肤。

总结:

可以看出,datepicher是一个很好用的插件,比自己写的肯定要好用很多,推荐大家使用。

另外,在使用中,可以定义一个文件,包含该插件的使用,配置好。以后有需要使用的地方,引入该文件,同时传给当前需要使用日期选择控件的id属性,这样便可以只配置一次了。

其他实用方法:

使用方法:

1.限制日期

$("#resultDiv").datepicker({                onSelect: function (dateText, inst) {                    //代码:选择日期后触发的事件                },                minDate: new Date(),//最小日期                maxDate: new Date($("#DateLimit").val())//最大日期            });

  2.中文

jQuery(function ($) {        $.datepicker.regional[‘zh-CN‘] = {            closeText: ‘关闭‘,            prevText: ‘<上月‘,            nextText: ‘下月>‘,            currentText: ‘今天‘,            monthNames: [‘一月‘, ‘二月‘, ‘三月‘, ‘四月‘, ‘五月‘, ‘六月‘,                ‘七月‘, ‘八月‘, ‘九月‘, ‘十月‘, ‘十一月‘, ‘十二月‘],            monthNamesShort: [‘一‘, ‘二‘, ‘三‘, ‘四‘, ‘五‘, ‘六‘,                ‘七‘, ‘八‘, ‘九‘, ‘十‘, ‘十一‘, ‘十二‘],            dayNames: [‘星期日‘, ‘星期一‘, ‘星期二‘, ‘星期三‘, ‘星期四‘, ‘星期五‘, ‘星期六‘],            dayNamesShort: [‘周日‘, ‘周一‘, ‘周二‘, ‘周三‘, ‘周四‘, ‘周五‘, ‘周六‘],            dayNamesMin: [‘日‘, ‘一‘, ‘二‘, ‘三‘, ‘四‘, ‘五‘, ‘六‘],            weekHeader: ‘周‘,            dateFormat: ‘yy-mm-dd‘,            firstDay: 1,            isRTL: false,            showMonthAfterYear: true,            yearSuffix: ‘年‘        };        $.datepicker.setDefaults($.datepicker.regional[‘zh-CN‘]);    });

  

开始日期(minDate)和结束日期(maxDate)

下面为两种实现步骤:

思路一:

第一步  实现两个datepicker组件。

需要定义两个input标签,类型为text,并指定id属性

HTML代码如下

开始日期:<input type="text" id="start">

结束日期:<input type="text" id="end">

在js代码中得到两个input元素的jQuery对象,并将其转化为datepicker组件

Js代码如下

$(document).ready(function(){  

   $("#start").datepicker();  

   $("#end").datepicker();  

});

  

实现以上操作后,在页面中点击文本框,如果出现datepicker则代表成功。

第二步  设置开始和结束日期

当选择开始日期的值后,则结束日期的最小值应该就是开始日期;同理,当选择结束日期后,开始日期的最大值则应该是结束日期。我们可以利用datepicker中的onSelect属性来设置当选择指定日期后触发的事件,通过该事件来指定对应的datepicker最小日期或最大日期。

Js代码如下

$("#start").datepicker({  

   onSelect:function(dateText,inst){  

      $("#end").datepicker("option","minDate",dateText);  

   }  

});  

$("#end").datepicker({  

   onSelect:function(dateText,inst){  

       $("#start").datepicker("option","maxDate",dateText);  

   }  

});

  

注:匿名函数中的dateText属性为当前选择日期的字符串

思路二:

第一步  同时获得两个文本框对象,并将其转换为datepicker(利用jQuery的选择器)

HTML代码如下

开始日期:<input type="text" id="start">

结束日期:<input type="text" id="end">

Js代码如下

var dates = $("#start,#end");  

dates.datepicker();

  

第二步  同样在选择日期后,触发onSelect事件,调用函数传递selectedDate参数,

函数体中首先判断触发事件的是开始日期还是结束日期,通过该判断来指定设置minDate或者是maxDate,然后利用not()函数,来反向选择另一个datepicker对象,并设置其对应的属性。

Js代码如下

dates.datepicker({  

   onSelect: function(selectedDate){  

      var option = this.id == "start" ? "minDate" : "maxDate";  

      dates.not(this).datepicker("option", option, selectedDate);  

   }  

});

  这样在设置一方后,另一方就会被限制了。

时间: 2024-10-11 22:07:55

jquery ui datepicker使用的相关文章

Adding a Timepicker to jQuery UI Datepicker

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="

jquery UI datepicker 添加时间的选择。

仅有日期的原始效果图: 支持时间选择的目标效果图: 第一步:引入几个重要的jquery UI 文件,其中zh-CN.js是支持中文的 <script href="Js/Jquery/jquery.js"/><script/> <script href="Js/jqueryui/jquery.ui.js"/><script/> <script href="Js/jqueryui/i18n/zh-CN.js

jQuery UI datepicker z-index默认为1 怎么处理

最近在维护一个后台系统的时候遇到这样的一个坑:后台系统中日期控件使用的是jQuery UI datepicker. 这个控件生成的日期选择框的z-index = 1.问题来了.页面上有不少z-index比1大的标签.我在网上搜了一下,发现有好多人都遇到了同样的问题.解决方法大体上有两种. 下面我结合demo,一起看一下. 我们先按照jQuery UI datepicker API 文档(地址我就不写了,应该能搜得到)写一个基本的demo,body中的代码如下: 1 <body> 2 3 <

jQuery UI Datepicker使用介绍

本博客使用Markdown编辑器编写 在企业级web开发过程中,日历控件和图表控件是使用最多的2中第三方组件.jQuery UI带的Datepicker,日历控件能满足大多数场景开发需要.本文就主要讨论jQuery UI Datepicker的使用,和中文本地化配置. 1.jQuery UI介绍 jQuery UI是一套基于jQuery控件和动画效果Javascript类库.可以用来构建交互式的互联网应用程序.最新版本1.10.4.基于jQuery 1.6+jQuery UI官方网站 2.jQu

[转]Using the HTML5 and jQuery UI Datepicker Popup Calendar with ASP.NET MVC - Part 4

本文转自:http://www.asp.net/mvc/overview/older-versions/using-the-html5-and-jquery-ui-datepicker-popup-calendar-with-aspnet-mvc/using-the-html5-and-jquery-ui-datepicker-popup-calendar-with-aspnet-mvc-part-4 This tutorial will teach you the basics of how

JQuery UI datepicker 使用方法

官方地址:http://docs.jquery.com/UI/Datepicker,官方示例: http://jqueryui.com/demos/datepicker/. 一个不错的地址,用来DIY jQuery UI界面效果的站点http://jqueryui.com/themeroller/ DatePicker基本使用方法: 代码如下: <!DOCTYPE html> <html> <head> <link href="http://ajax.g

jQuery UI Datepicker&amp;Datetimepicker添加 时-分-秒 并且,判断

jQuery UI Datepicker时间(年-月-日) 相关代码: <input type="text" value="" name="adv_start_time" id="adv_start_time" class="txt date"> <script type="text/javascript" src="xxxx路径/jquery.ui.js&q

JQuery UI datepicker 使用方法(转)

官方地址:http://docs.jquery.com/UI/Datepicker,官方示例: http://jqueryui.com/demos/datepicker/. 一个不错的地址,用来DIY jQuery UI界面效果的站点http://jqueryui.com/themeroller/ DatePicker基本使用方法: 代码如下: <!DOCTYPE html> <html> <head> <link href="http://ajax.g

Jquery UI - DatePicker 在Dialog中无法自动隐藏的解决思路

通过Jquery UI Dialog模态展示如下的一个员工编辑页面,但是遇到一个奇怪的问题:点击Start Date的input元素后,其无法失去焦点.从而导致DatePicker控件在选择日期后无法自动隐藏. 解决思路:给DatePicker加上onSelect事件,在该事件中让Start Date的input元素的父元素获取焦点,这样DatePicker控件在选择日期后就自动隐藏.