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

  1、html

  input经常使用在表单的输入,包括text,password,H5后又新增了许多type属性值,如url, email, member等等,考虑到非现代浏览器的兼容性问题,这些新的type经常使用在移动端的项目中。浏览器

 

  2、ide

  IE10+浏览器下,input标签会有一个默认的样式,好比文本框的‘×’号,密码框的小眼睛。初衷是好的,有时候很方便,但有时候咱们会本身设置样式和功能。能够用伪元素方法去除: 函数

::-ms-clear, ::-ms-reveal{display: none;}

 

  3、this

  在低版本的IE下,input中的文字位置会改变(偏上显示),解决方法:(思路: 设置input的高度=行高)url

input {
    height: 60px;
    line-height: 60px;
    margin: 0;
    padding: 0;
    outline: none;
}

  

  4、spa

  实际中,咱们会在input的前面用label标签或其余,提示input的内容信息。在IE下,在得到焦点、失去焦点时,label标签里的文字会出现抖动问题。解决方法:(设置input的显示方式为行内块)code

input {
  display: inline-block;      
}

 

  

  5、htm

  ##placeholder是H5的一个新属性,可是在IE9如下是不支持的,为此咱们会封装一个函数进行能力检测。对象

  参考地址:http://www.studyofnet.com/news/1022.html

  ###如下是代码部分:

 1 $(function() {
 2     // 若是不支持placeholder,用jQuery来完成
 3     if(!isSupportPlaceholder()) {
 4         // 遍历全部input对象, 除了密码框
 5         $('input').not("input[type='password']").each(
 6             function() {
 7                 var self = $(this);
 8                 var val = self.attr("placeholder");
 9                 input(self, val);
10             }
11         );
12 
13         /**
14          *  对password框的特殊处理
15          * 1.建立一个text框 
16          * 2.获取焦点和失去焦点的时候切换
17          */
18         $('input[type="password"]').each(
19             function() {
20                 var pwdField    = $(this);
21                 var pwdVal      = pwdField.attr('placeholder');
22                 var pwdId       = pwdField.attr('id');
23                 // 重命名该input的id为原id后跟1
24                 pwdField.after('<input id="' + pwdId +'1" type="text" value='+pwdVal+' autocomplete="off" />');
25                 var pwdPlaceholder = $('#' + pwdId + '1');
26                 pwdPlaceholder.show();
27                 pwdField.hide();
28 
29                 pwdPlaceholder.focus(function(){
30                     pwdPlaceholder.hide();
31                     pwdField.show();
32                     pwdField.focus();
33                 });
34 
35                 pwdField.blur(function(){
36                     if(pwdField.val() == '') {
37                         pwdPlaceholder.show();
38                         pwdField.hide();
39                     }
40                 });
41             }
42         );
43     }
44 });
45 
46 // 判断浏览器是否支持placeholder属性
47 function isSupportPlaceholder() {
48     var input = document.createElement('input');
49     return 'placeholder' in input;
50 }
51 
52 // jQuery替换placeholder的处理
53 function input(obj, val) {
54     var $input = obj;
55     var val = val;
56     $input.attr({value:val});
57     $input.focus(function() {
58         if ($input.val() == val) {
59             $(this).attr({value:""});
60         }
61     }).blur(function() {
62         if ($input.val() == "") {
63             $(this).attr({value:val});
64         }
65     });
66 }
相关文章
相关标签/搜索