@@ -6,28 +6,52 @@ define(['angular'], function(angular) {
66var supportPlaceHoder = 'placeholder' in document . createElement ( 'input' ) ;
77
88if ( ! supportPlaceHoder ) {
9+ var changeInputType = function ( oldObject , oType ) {
10+ var newObject = document . createElement ( 'input' ) ;
11+ newObject . type = oType ;
12+ if ( oldObject . className ) newObject . className = oldObject . className ;
13+ oldObject . parentNode . insertBefore ( newObject , oldObject ) ;
14+ return newObject ;
15+ }
916md . directive ( 'placeholder' , [ '$timeout' , function ( $timeout ) {
1017
1118return function ( scope , elem , attrs ) {
1219var txt = attrs . placeholder ;
1320if ( ! txt ) return ;
21+ var newInput ;
22+ newInput = angular . element ( changeInputType ( elem [ 0 ] , 'text' ) ) ;
23+ newInput . val ( txt ) ;
24+ newInput . on ( 'focus' , function ( ) {
25+ newInput . css ( 'display' , 'none' ) ;
26+ elem . css ( 'display' , 'inline-block' ) [ 0 ] . focus ( ) ;
27+ } ) ;
28+ elem . css ( 'display' , 'none' ) ;
29+
1430var modelT = attrs . ngModel ;
31+
1532elem . on ( 'focus' , function ( ) {
16- if ( modelT ? ! scope . $eval ( modelT ) : ( elem . val ( ) === txt ) ) {
33+ if ( modelT ? ! scope . $eval ( modelT ) : ! elem . val ( ) ) {
1734elem . val ( '' ) ;
1835}
1936scope . $apply ( ) ;
2037} ) ;
2138
2239elem . on ( 'blur' , function ( ) {
2340if ( elem . val ( ) === '' ) {
24- elem . val ( txt ) ;
41+ newInput . css ( 'display' , 'inline-block' ) ;
42+ elem . css ( 'display' , 'none' ) ;
2543}
2644scope . $apply ( ) ;
2745} ) ;
2846
2947$timeout ( function ( ) {
30- if ( ! elem . val ( ) ) elem . val ( txt ) ;
48+ if ( ! elem . val ( ) ) {
49+ newInput . css ( 'display' , 'inline-block' ) ;
50+ elem . css ( 'display' , 'none' ) ;
51+ } else {
52+ newInput . css ( 'display' , 'none' ) ;
53+ elem . css ( 'display' , 'inline-block' ) ;
54+ }
3155scope . $apply ( ) ;
3256} ) ;
3357}
0 commit comments