input 的 placeholder属性在IE8下的兼容处理

Posted candice-cc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了input 的 placeholder属性在IE8下的兼容处理相关的知识,希望对你有一定的参考价值。

placeholder是input标签的新属性,在使用的时候有两个问题:

1、IE8 下不兼容

处理思路:

如果浏览器不识别placeholder属性,给input添加类名placeholder,模仿placeholder属性的样式,并给input 的value赋值placeholder属性的值

2、 input的type属性是password的情况,用上面的方法处理提示语为密码文

处理思路:

新添加一个标签,模仿placeholder属性

 

直接上代码:

 css部分:

 1  .input-item {
 2       position: relative;
 3       margin: 10px;
 4     }
 5 .pwd-place {
 6   position: absolute;
 7   top: 0;
 8   left: 72px;
 9   width: 100%;
10   height: 100%;
11   font-size: 12px;
12 }

html部分:

 1  <form action="#">
 2   <div class="input-item">
 3     <label for="userName">用户名:</label>
 4     <input class="username" id="userName" type="text" placeholder="请输入用户名">
 5   </div>
 6    <div class="input-item">
 7     <label for="pwd">密码:</label>
 8     <input class=" password" id="pwd" type="password" placeholder="请输入密码">
 9     <span class="pwd-place"></span>
10   </div>
11 
12   </form>

js部分:

 1 <script src="jquery-1.11.3.js"></script>
 2   <script>
 3       function placeholder(el){
 4 
 5          function isPlaceholer(){
 6           var input = document.createElement("input");
 7           return "placeholder" in input;
 8          }
 9 
10         var $el = $(el);
11         if( isPlaceholer()==false && !(\'placeholder\' in document.createElement(\'input\')) ){
12 
13               $(\'input[placeholder],textarea[placeholder]\').each(function(){
14                   var that = $(this),
15                           text= that.attr(\'placeholder\');
16                   if(that.val()===""){
17                       if(that.attr("type") == "password"){
18                           $el.html("请输入密码");
19                       }else {
20                           that.val(text).addClass(\'placeholder\');
21                       }
22                   }
23                   that.focus(function(){
24                       if($el.html() == text){
25                           $el.html("");
26                       }
27                       if(that.val()===text) {
28                           that.val("").removeClass(\'placeholder\');
29 
30                       }
31                   })
32                   .blur(function(){
33                       if(that.val()==="") {
34                           if (that.attr("type") == "password") {
35                               $el.html("请输入密码");
36 
37                           }else {
38                               that.val(text).addClass(\'placeholder\');
39                           }
40                       }
41                   })
42                   .closest(\'form\').submit(function(){
43                       if(that.val() === text){
44                           that.val(\'\');
45                       }
46                   });
47               });
48            }
49       }
50  $(document).ready(function() {
51      placeholder(".pwd-place")
52       });
53   </script>

 

以上是关于input 的 placeholder属性在IE8下的兼容处理的主要内容,如果未能解决你的问题,请参考以下文章

jquery.placeholder.js解决IE8兼容h5中input属性placeholder属性

ie8不兼容input的placeholder属性但是要实现其效果的方法

ie8兼容问题

关于input标签和placeholder在IE8,9下的兼容问题

兼容IE8 input的placeholder的文字显示

IE8兼容placeholder