AngularJs的UI组件Datepicker Popup

前端之家收集整理的这篇文章主要介绍了AngularJs的UI组件Datepicker Popup前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

@H_404_1@Datepicker Popup是用来选择日期的控件,一般和文本框一起使用,功能和Jquery的插件My97DatePicker一样。在Datepicker Popup内部使用了ui-bootstrap的另一个组件Datepicker,是Datepicker的扩展。

@H_404_1@使用Datepicker Popup前,一定要引用angular-locale_zh-cn.js这个脚本,否则显示出来的月份和星期就是英文了。

@H_404_1@先来看一个最简单的用法

 1 <!DOCTYPE html>
 2 <html ng-app="ui.bootstrap.demo" xmlns="http://www.w3.org/1999/xhtml" 3 @H_403_46@head 4     @H_403_46@Meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5     @H_403_46@title></ 6     @H_403_46@link href="/Content/bootstrap.css" rel="stylesheet"  7     @H_403_46@script src="/Scripts/angular.js"@H_403_46@script 8     ="/Scripts/ui-bootstrap-tpls-1.3.2.js" 9     ="/Scripts/angular-locale_zh-cn.js"10     11  angular.module('ui.bootstrap.demo,[ui.bootstrap]).controller(DatepickerPopupDemoCtrlfunction ($scope) { 12  $scope.dat = new Date(); 13  $scope.format "yyyy/MM/dd; 14  $scope.altInputFormats = [yyyy/M!/d!]; 15 
16  $scope.popup1  { 17  opened: false
18  }; 19  $scope.open1  () { 20  $scope.popup1.opened true21 22  }); 23     </24 25 @H_403_46@body26     @H_403_46@div ng-controller="DatepickerPopupDemoCtrl"27         @H_403_46@p class="form-group"28             ="input-group"29                 @H_403_46@input type="text" class="form-control" uib-datepicker-popup="{{format}}" ng-model="dat" is-open="popup1.opened" ng-required="true" close-text="关闭"
30  clear-text="清空" current-text="今天" alt-input-formats="altInputFormats" 31                 @H_403_46@span ="input-group-btn"32                     @H_403_46@button ="button"="btn btn-default" ng-click="open1()"><i ="glyphicon glyphicon-calendar"@H_403_46@i@H_403_46@button33                 @H_403_46@span34             @H_403_46@div35         @H_403_46@p36     37 38 @H_403_46@html>

@H_404_1@

@H_404_1@其中最关键是这个:uib-datepicker-popup="{{format}}",uib-datepicker-popup支持多种格式化方式,以2016-6-23 17:35:08这个日期为例,格式化文本和格式化后的值是:

@H_404_1@格式化文本 @H_404_1@值 @H_404_1@备注
@H_404_1@yyyy @H_404_1@2016 @H_404_1@4位数年份
@H_404_1@yy @H_404_1@16 @H_404_1@2位数年份
@H_404_1@y @H_404_1@2016 @H_404_1@1到4位数年份
@H_404_1@MMMM @H_404_1@六月 @H_404_1@
@H_404_1@MMM @H_404_1@6月 @H_404_1@
@H_404_1@MM @H_404_1@06 @H_404_1@2位数月份
@H_404_1@M @H_404_1@6 @H_404_1@1位数月份
@H_404_1@M! @H_404_1@06 @H_404_1@1位或2位数月份
@H_404_1@dd @H_404_1@23 @H_404_1@2位数日期
@H_404_1@d @H_404_1@23 @H_404_1@1位数日期
@H_404_1@d! @H_404_1@23 @H_404_1@1位数或2位数日期
@H_404_1@EEEE @H_404_1@星期四 @H_404_1@
@H_404_1@EEE @H_404_1@周四 @H_404_1@
@H_404_1@HH @H_404_1@17 @H_404_1@24小时制 小时
@H_404_1@H @H_404_1@17 @H_404_1@
@H_404_1@hh @H_404_1@05 @H_404_1@12小时制 小时
@H_404_1@h @H_404_1@5 @H_404_1@
@H_404_1@mm @H_404_1@35 @H_404_1@分钟
@H_404_1@m @H_404_1@35 @H_404_1@
@H_404_1@sss @H_404_1@196 @H_404_1@毫秒
@H_404_1@ss @H_404_1@08 @H_404_1@秒
@H_404_1@s @H_404_1@8 @H_404_1@
@H_404_1@a @H_404_1@下午 @H_404_1@上午或下午
@H_404_1@Z @H_404_1@+0800 @H_404_1@时区
@H_404_1@ww @H_404_1@25 @H_404_1@当年的第几周
@H_404_1@w @H_404_1@25 @H_404_1@
@H_404_1@G,GG,GGG,GGGG @H_404_1@公元 @H_404_1@公元或公元前
@H_404_1@fullDate @H_404_1@2016年6月23日星期四 @H_404_1@
@H_404_1@longDate @H_404_1@2016年6月23日 @H_404_1@
@H_404_1@medium @H_404_1@2016年6月23日 下午5:35:08 @H_404_1@
@H_404_1@mediumDate @H_404_1@2016年6月23日 @H_404_1@
@H_404_1@mediumTime @H_404_1@下午5:35:08 @H_404_1@
@H_404_1@short @H_404_1@16/6/23 下午5:35 @H_404_1@
@H_404_1@shortDate @H_404_1@16/6/23 @H_404_1@
@H_404_1@shortTime @H_404_1@下午5:35 @H_404_1@

@H_404_1@uib-datepicker-popup控件可以使用的属性有:

@H_404_1@属性 @H_404_1@默认值 @H_404_1@备注
@H_404_1@alt-input-formats @H_404_1@[] @H_404_1@手动输入日期时可接受的格式
@H_404_1@clear-text @H_404_1@clear @H_404_1@清空按钮的文本
@H_404_1@close-on-date-selection @H_404_1@true @H_404_1@选择一个日期后是否关闭日期面板
@H_404_1@close-text @H_404_1@close @H_404_1@关闭按钮的文本
@H_404_1@current-text @H_404_1@today @H_404_1@今天按钮的文本
@H_404_1@datepicker-append-to-body @H_404_1@false @H_404_1@是否将日期面板放在body元素中
@H_404_1@datepicker-options @H_404_1@ @H_404_1@对Datepicker控件的配置
@H_404_1@datepicker-popup-template-url @H_404_1@uib/template/datepickerPopup/popup.html @H_404_1@
@H_404_1@is-open @H_404_1@false @H_404_1@是否显示日期面板
@H_404_1@on-open-focus @H_404_1@true @H_404_1@打开日期面板时是否获取焦点
@H_404_1@show-button-bar @H_404_1@true @H_404_1@是否在日期面板下方显示”今天”,”关闭”等按钮
@H_404_1@type @H_404_1@text @H_404_1@可以改为date|datetime-local|month,这样会改变日期面板的日期格式化。
@H_404_1@popup-placement @H_404_1@auto bottom-left @H_404_1@在位置前加一个auto,表示日期面板会定位在它最近一个可以滚动的父元素中.可以设置的位置有:top top-left top-right bottom bottom-left bottom-right left left-top left-bottom right right-top right-bottom
@H_404_1@uib-datepicker-popup @H_404_1@yyyy-MM-dd @H_404_1@显示日期的格式。可使用的格式见上面的列表。

对于datepicker-append-to-body属性,值为false时弹出面板的html会紧跟在input元素的后面,值为true时面板html会放在body元素中。如果要对面板的样式做特殊调整时,使用这个属性会比较方便(因为紧跟在input元素后面会继承父元素的样式,放在body元素中可以单独为这个面板设置样式)

@H_404_1@对于type属性,个人感觉似乎没有什么用,因为在input元素上使用uib-datepicker-popup="{{format}}"时,改变type的值为date或datetime-local或month实际上是会报错的:“HTML5 date input types do not support custom formats”,在不使用uib-datepicker-popup="{{format}}"时,改变日期面板格式化是使用浏览器实现的HTML5日期格式化功能,相当于不使用uib-datepicker-popup控件,那就没有意义了。

@H_404_1@因为uib-datepicker-popup扩展了Datepicker控件,所以uib-datepicker-popup可以使用Datepicker的配置,也就是datepicker-options,这是一个Json对象,可以设置的项有:

@H_404_1@键 @H_404_1@默认值 @H_404_1@备注
@H_404_1@customClass @H_404_1@ @H_404_1@一个可选的函数,设置日期面板中每个日期的样式。传入参数为一个json对象{date: obj1,mode: obj2},返回值为类的名字
@H_404_1@dateDisabled @H_404_1@ @H_404_1@一个可选的函数,设置日期面板中每个日期是否可选。传入参数为一个json对象{date: obj1,mode: obj2},返回值为bool类型
@H_404_1@datepickerMode @H_404_1@day @H_404_1@可设置为day,month,year。表示控件的选择模式
@H_404_1@formatDay @H_404_1@dd @H_404_1@天数的格式化形式
@H_404_1@formatMonth @H_404_1@MMMM @H_404_1@月份的格式化形式
@H_404_1@formatYear @H_404_1@yyyy @H_404_1@年份的格式化形式
@H_404_1@formatDayHeader @H_404_1@EEE @H_404_1@星期的格式化形式
@H_404_1@formatDayTitle @H_404_1@MMMM yyyy @H_404_1@按天数选择日期时,面板中当前月份和年份的格式化形式(显示为:六月 2016 的地方)
@H_404_1@formatMonthTitle @H_404_1@yyyy @H_404_1@按月份选择日期时,面板中当前年份的格式化形式
@H_404_1@initDate @H_404_1@null @H_404_1@初始化日期
@H_404_1@maxDate @H_404_1@null @H_404_1@可选择的最大日期(必须是Javascript日期类型)
@H_404_1@maxMode @H_404_1@year @H_404_1@可选择的最大日期模式
@H_404_1@minDate @H_404_1@null @H_404_1@可选择的最小日期(必须是Javascript日期类型)
@H_404_1@minMode @H_404_1@day @H_404_1@可选择的最小日期模式
@H_404_1@shortcutPropagation @H_404_1@false @H_404_1@是否禁用键盘事件传播
@H_404_1@showWeeks @H_404_1@true @H_404_1@是否显示面板中的日期是当年的第几周
@H_404_1@startingDay @H_404_1@$locale.DATETIME_FORMATS.FIRSTDAYOFWEEK @H_404_1@一个星期从周几开始。可设置为0到6的数字,0表示周日,6表示周六
@H_404_1@yearRows @H_404_1@4 @H_404_1@选择年份时显示多少行
@H_404_1@yearColumns @H_404_1@5 @H_404_1@选择年份时显示多少列

@H_404_1@这是一个使用customClass自定义样式和dateDisabled自定义禁选范围的例子:

$scope.dateOptions 23 customClass: getDayClass,0); font-size:12px!important; line-height:1.5!important">//自定义类名 24 dateDisabled: isDisabled是否禁用 25 } 26 27 28 var tomorrow 29 tomorrow.setDate(tomorrow.getDate() + 1); 30 afterTomorrow 31 afterTomorrow.setDate(tomorrow.getDate() 32 $scope.events [ 33 34 date: tomorrow,35 status: full' 36 },128); font-size:12px!important; line-height:1.5!important">37 38 date: afterTomorrow,128); font-size:12px!important; line-height:1.5!important">39 partially40 41 ]; 42 为日期面板中的每个日期(默认42个)返回类名。传入参数为{date: obj1,mode: obj2} 43 getDayClass(obj) { 44 date obj.date,128); font-size:12px!important; line-height:1.5!important">45 mode obj.mode; 46 if (mode === day) { 47 dayToCheck Date(date).setHours(048 49 for ( i ; i < $scope.events.length; i++50 currentDay Date($scope.events[i].date).setHours(51 52 (dayToCheck === currentDay) { 53 return $scope.events[i].status; 54 55 56 57 return ''58 59 设置日期面板中的所有周六和周日不可选 60 isDisabled(obj) { 61 62 63 ' && (date.getDay() 0 || date.getDay() 664 65 66 67 style68 .full button span { 69 background-color: limegreen; 70 border-radius 32px71 color black72 } 73 74 .partially button span 75 orange76 77 78 79 80 81 82 83 84 85 86 ="altInputFormats" datepicker-options="dateOptions" 87 88 89 90 91 92 93 94 注意禁选日期的显示和自定义类的显示。

在打开日期面板时,可以使用键盘来选择日期,上下左右和PgUp,PgDn,Home,End,Ctrl+Up,Ctrl+Down选择范围,空格或者回车选择日期,Esc退出面板。


转载出处

猜你在找的Angularjs相关文章