placeholder

18839 ワード

html:
 

 
css:
.phcolor{ color:#999;}
 
解決input[type='text']
 1 supportPlaceholder='placeholder'in document.createElement('input'),
 2          placeholder=function(input){
 3            var text = input.attr('placeholder'), defaultValue = input.defaultValue;
 4            if(!defaultValue){
 5              input.val(text).addClass("phcolor");
 6            }
 7            input.focus(function(){
 8              if(input.val() == text){
 9                $(this).val("");
10              }
11            })
12            input.blur(function(){
13              if(input.val() == ""){
14                $(this).val(text).addClass("phcolor");
15              }
16            })
17         
18            // 
19            input.keydown(function(){
20              $(this).removeClass("phcolor");
21            });
22          }
23         
24          // placeholder , placeholder 
25          if(!supportPlaceholder){
26            $('input').each(function(){
27              text = $(this).attr("placeholder");
28              if($(this).attr("type") == "text"){
29                placeholder($(this));
30              }
31            })
32          }

 
解決input[type='password']
 1 (function($){
 2     var Placeholder,
 3         inputHolder = 'placeholder' in document.createElement('input'),
 4     Placeholder = {
 5         ini:function () {
 6             if (inputHolder) {
 7                 return false;
 8             }
 9             this.el = $(':password[placeholder]');
10             this.setHolders();
11         },
12         setHolders: function(obj){
13             var el = obj ? $(obj) : this.el;
14             if (el) {
15                 var self = this;
16                 el.each(function() {
17                     var span = $('<label />');
18                     span.text( $(this).attr('placeholder') );
19                     span.css({
20                         color: '#999',
21                         fontSize: "15px",
22                         fontFamily: $(this).css('fontFamily'),
23                         position: 'absolute',
24                         top: $(this).offset().top + $(this).css("marginTop"),
25                         left: ( parseInt($(this).offset().left) + 30 + parseInt( $(this).css("marginLeft").replace(/px/g,"") ) ) + "px",
26                         width: $(this).width(),
27                         height: $(this).height(),
28                         lineHeight: $(this).height() + 'px',
29                         textIndent: $(this).css('textIndent'),
30                         paddingLeft: $(this).css('borderLeftWidth'),
31                         paddingTop: $(this).css('borderTopWidth'),
32                         paddingRight: $(this).css('borderRightWidth'),
33                         paddingBottom: $(this).css('borderBottomWidth'),
34                         display: 'inline',
35                         overflow: 'hidden'
36                     })
37                     if (!$(this).attr('id')) {
38                         $(this).attr('id', self.guid());
39                     }
40                     span.attr('for', $(this).attr('id'));
41                     $(this).after(span);
42                     self.setListen(this, span);
43                 })
44             }
45         },
46         setListen : function(el, holder) {
47             if (!inputHolder || !textareaHolder) {
48                 el = $(el);
49                 el.bind('keydown', function(e){
50                         if (el.val() != '') {
51                             holder.hide(0);
52                         } else if ( /[a-zA-Z0-9`~!@#\$%\^&\*\(\)_+-=\[\]\{\};:'"\|\\,.\/\?<>]/.test(String.fromCharCode(e.keyCode)) ) {
53                             holder.hide(0);
54                         } else {
55                             holder.show(0);
56                         }
57                 });
58                 el.bind('keyup', function(e){
59                         if (el.val() != '') {
60                             holder.hide(0);
61                         } else {
62                             holder.show(0);
63                         }
64 
65                 });
66                 el.on("focus",function(e){
67                     if(el.val()==""){
68                         holder.hide(0);
69                     }
70                 });
71                 el.on("blur",function(e){
72                     if(el.val()==""){
73                         holder.show(0);
74                     } 
75                 });
76             }
77         },
78         guid: function() {
79             return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
80                 var r = Math.random()*16| 0,
81                     v = c == 'x' ? r : (r&0x3|0x8);
82                 return v.toString(16);
83             }).toUpperCase();
84         }
85         
86     }
87 
88     $.fn.placeholder = function () {
89         if (inputHolder && textareaHolder) {
90             return this;
91         }
92         Placeholder.setListen(this);
93         return this;
94     }
95 
96     $.placeholder = Placeholder;
97 
98 })(jQuery)