關於input標簽和placeholder在IE8,9下的兼容問題


  一、

  input常用在表單的輸入,包括text,password,H5后又新增了許多type屬性值,如url, email, member等等,考慮到非現代瀏覽器的兼容性問題,這些新的type常用在移動端的項目中。

 

  二、

  IE10+瀏覽器下,input標簽會有一個默認的樣式,比如文本框的‘×’號,密碼框的小眼睛。初衷是好的,有時候很方便,但有時候我們會自己設置樣式和功能。可以用偽元素方法去除: 

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

 

  三、

  在低版本的IE下,input中的文字位置會改變(偏上顯示),解決方法:(思路: 設置input的高度=行高)

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

  

  四、

  實際中,我們會在input的前面用label標簽或其他,提示input的內容信息。在IE下,在獲得焦點、失去焦點時,label標簽里的文字會出現抖動問題。解決方法:(設置input的顯示方式為行內塊)

input {
  display: inline-block;      
}

 

  

  五、

  ##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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM