html5 属性placeholder 不支持ie7 8 9

时间:2022-12-19 19:44:05

placeholder 属性


定义和用法

placeholder 属性提供可描述输入字段预期值的提示信息(hint)。

该提示会在输入字段为空时显示,并会在字段获得焦点时消失。

注释:placeholder 属性适用于以下的 <input> 类型:text, search, url, telephone, email 以及 password。

解决兼容性问题方法1:



$(function(){


       handlePlaceholderForIE();
});
 function handlePlaceholderForIE() {
            // placeholder attribute for ie7 & ie8
            if (jQuery.browser.msie && jQuery.browser.version.substr(0, 1) <= 9) {


                // ie7&ie8
                jQuery('input[placeholder], textarea[placeholder]').each(function () {
                    var input = jQuery(this);
                    jQuery(input).val(input.attr('placeholder'));
                    jQuery(input).focus(function () {
                        if (input.val() == input.attr('placeholder')) {
                            input.val('');
                        }
                    });
                    jQuery(input).blur(function () {
                        if (input.val() == '' || input.val() == input.attr('placeholder')) {
                            input.val(input.attr('placeholder'));
                        }
                    });
                });
            }
        }



方法二:


HTML:

<input type="text" id="uname" name="uname" placeholder="请输入用户名"/>

CSS:

.phcolor{ color:#999;}

JS:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
$( function (){ 
 
   //判断浏览器是否支持placeholder属性
   supportPlaceholder= 'placeholder' in document.createElement( 'input' ),
 
   placeholder= function (input){
 
     var text = input.attr( 'placeholder' ),
     defaultValue = input.defaultValue;
 
     if (!defaultValue){
 
       input.val(text).addClass( "phcolor" );
     }
 
     input.focus( function (){
 
       if (input.val() == text){
   
         $( this ).val( "" );
       }
     });
 
  
     input.blur( function (){
 
       if (input.val() == "" ){
       
         $( this ).val(text).addClass( "phcolor" );
       }
     });
 
     //输入的字符不为灰色
     input.keydown( function (){
  
       $( this ).removeClass( "phcolor" );
     });
   };
 
   //当浏览器不支持placeholder属性时,调用placeholder函数
   if (!supportPlaceholder){
 
     $( 'input' ).each( function (){
 
       text = $( this ).attr( "placeholder" );
 
       if ($( this ).attr( "type" ) == "text" ){
 
         placeholder($( this ));
       }
     });
   }
 
});

方法三:

此方法的思路是做一张含有提示文字的图片作为input输入框的背景图,初始时获得焦点同时加载背景图;

背景图如下:

当输入框不为空时,去掉背景图;

当输入框为空时,加载背景图;

当用户键盘按键且输入框不为空( 输入字符 )时,去掉背景图;

当用户键盘按键且输入框为空( 删除字符 )时,加载背景图。

此方法的缺点是:需要为每一个提示文字不同的input制作背景图片,并且设置input的样式。

HTML代码不变。

CSS:

.phbg{ background:url(img/bg.jpg) 0 0 no-repeat;}

JS:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
$( function (){ 
 
    //判断浏览器是否支持placeholder属性
    supportPlaceholder= 'placeholder' in document.createElement( 'input' );
 
    if (!supportPlaceholder){
 
      //初始状态添加背景图片
      $( "#uname" ).attr( "class" , "phbg" );
      //初始状态获得焦点
      $( "#uname" ).focus;
 
      function destyle(){
      
       if ($( "#uname" ).val() != "" ){
         
         $( "#uname" ).removeClass( "phbg" );
       } else {
       
         $( "#uname" ).attr( "class" , "phbg" );
        }
      }
      
      //当输入框为空时,添加背景图片;有值时去掉背景图片
      destyle();
 
      $( "#uname" ).keyup( function (){
 
       //当输入框有按键输入同时输入框不为空时,去掉背景图片;有按键输入同时为空时(删除字符),添加背景图片
       destyle();
      });
 
      $( "#uname" ).keydown( function (){
      
       //keydown事件可以在按键按下的第一时间去掉背景图片
       $( "#uname" ).removeClass( "phbg" );
      });
    }
});