22 * Created by Jonathan Zhang on 2017/5/23.
33 */
44( function ( ) {
5- var datepicker = window . datepicker ;
5+ var datepicker = window . datepicker ,
6+ monthDate ,
7+ $wrapper ;
68
7- datepicker . buildUi = function ( year , month ) {
9+ datepicker . buildUi = function ( year , month ) {
810
9- var monthDate = datepicker . getMonthData ( year , month ) ;
11+ monthDate = datepicker . getMonthData ( year , month ) ;
1012
1113 var html = '<div class="ui-datepicker-header">' +
1214 '<a href="#" class="ui-datepicker-btn ui-datepicker-prev-btn"><</a>' +
3335 if ( i % 7 === 0 ) {
3436 html += '<tr>' ;
3537 }
36- html += '<td>' + date . showDate + '</td>' ;
38+ html += '<td data-date="' + monthDate . days [ i ] . date + '">' +
39+ monthDate . days [ i ] . showDate +
40+ '</td>' ;
3741 if ( i % 7 === 6 )
3842 {
3943 html += '</tr>' ;
4448 '</div>' ;
4549 return html ;
4650 } ;
47- datepicker . init = function ( $dom ) {
48- var html = datepicker . buildUi ( ) ;
49- $dom . innerHTML = html ;
51+
52+ datepicker . render = function ( direction ) {
53+ var year , month ;
54+ if ( monthDate ) {
55+ year = monthDate . year ;
56+ month = monthDate . month ;
57+ }
58+
59+ if ( direction === "prev" ) {
60+ month -- ;
61+ if ( month === 0 ) {
62+ month = 12 ;
63+ year -- ;
64+ }
65+ }
66+ if ( direction === 'next' ) month ++ ;
67+
68+ var html = datepicker . buildUi ( year , month ) ;
69+
70+ if ( ! $wrapper ) {
71+ $wrapper = document . createElement ( "div" ) ;
72+ $wrapper . className = "ui-datepicker-wrapper" ;
73+ }
74+
75+ $wrapper . innerHTML = html ;
76+ document . body . appendChild ( $wrapper ) ;
77+ } ;
78+
79+ datepicker . init = function ( input ) {
80+ datepicker . render ( ) ;
81+
82+ var $input = document . querySelector ( input ) ;
83+ var isOpen = false ;
84+
85+ $input . addEventListener ( 'click' , function ( ) {
86+ if ( isOpen ) {
87+ $wrapper . classList . remove ( 'ui-datepicker-wrapper-show' ) ;
88+ isOpen = false ;
89+ } else {
90+ $wrapper . classList . add ( 'ui-datepicker-wrapper-show' ) ;
91+ var left = $input . offsetLeft ;
92+ var top = $input . offsetTop ;
93+ var height = $input . offsetHeight ;
94+ $wrapper . style . top = top + height + 2 + 'px' ;
95+ $wrapper . style . left = left + 'px' ;
96+ isOpen = true ;
97+ }
98+ } , false ) ;
99+
100+ $wrapper . addEventListener ( 'click' , function ( e ) {
101+ var $target = e . target ;
102+ if ( ! $target . classList . contains ( 'ui-datepicker-btn' ) ) return ;
103+ /*上个月*/
104+ if ( $target . classList . contains ( 'ui-datepicker-prev-btn' ) ) {
105+ datepicker . render ( 'prev' ) ;
106+ }
107+ /*下个月*/
108+ else if ( $target . classList . contains ( 'ui-datepicker-next-btn' ) ) {
109+ datepicker . render ( 'next' ) ;
110+ }
111+ } , false ) ;
112+
113+ $wrapper . addEventListener ( 'click' , function ( e ) {
114+
115+ } )
50116 } ;
51117} ) ( ) ;
0 commit comments