2012-04-26 41 views
15

我知道Internet Explorer不支持輸入標記的佔位符屬性,但肯定在2012年必須有另一種解決方案的IE瀏覽器?IE的輸入標籤上的佔位符屬性?

+1

https://www.google.com/search?q=placeholder+polyfill – SLaks 2012-04-26 14:35:51

+1

好問題。在跳轉回答之前,讓我們看看其他瀏覽器中*本地支持*的情況。在IE10 RP上測試,-ms-input-placeholder {} psuedo選擇器支持[此**測試**頁面上列出的所有13個屬性](http://newilk.com/testing/Placeholder_styling)。 Chrome不支持佔位符中的填充,而FF的行高不足。較新版本的Safari支持13個屬性中的5個(同時在其以前的版本中支持10個屬性)。從Opera 11開始,佔位符樣式被丟棄。 – 2012-09-12 16:39:19

回答

14

我寫了一個jQuery插件,它會向任何不支持它的瀏覽器添加佔位符支持。

Placeholder Text in IE

+0

感謝您的回覆。我試過你的代碼,但我似乎無法得到它的工作。我做了一個非常簡單的單行HTML頁面在IE 9中測試。這裏是我的代碼: – DextrousDave 2012-04-26 16:16:11

+0

\t \t <腳本src =「javascript/jquery-1.7.2.min.js」> \t \t \t \t \t \t

<輸入的ID = 「姓名」 類型= 「文本」 名稱= 「姓名」 佔位符= 「例如你的名字」> \t \t
\t – DextrousDave 2012-04-26 16:31:45

+0

任何問題我做了什麼。我真的嘗試了各種各樣的東西,我的鏈接都很好... – DextrousDave 2012-04-26 16:32:32

3

實際上,IE does support 2012的佔位符屬性(版本10)。加上舊版瀏覽器的a polyfill,您應該針對您的問題提供全面的解決方案。

+6

而不是使用polyfill,您可以將它與事實相結合,佔位符不是標籤的替代品(它們是提示和示例),因此非必要,您可以不必擔心不支持它們的瀏覽器。 – Quentin 2012-04-26 14:40:40

+0

+1 @Quentin大點。 – Sampson 2012-04-26 14:43:06

+1

[html5please.com](http://html5please.com/)是這類信息的另一個很好的資源。在佔位符上:[http://html5please.com/#placeholder](http://html5please.com/#placeholder) – 2012-04-26 14:57:54

0

是的,有一個很簡單的解決方案對於IE8和IE9,因爲在IE的更大版本上它已經可以工作。 (IE10,IE11等等)

這是我找到了解決方案:

1.檢測Internet Explorer版本

<!--[if lt IE 10]>  
    <script type="text/javascript">var ie = 9;</script>  
<![endif]-->  
<!--[if lt IE 9]>     
    <script type="text/javascript">var ie = 8;</script>   
<![endif]--> 

2.修正佔位符

if (typeof ie == 'undefined') var ie = 10; 
if (ie == 8 || ie == 9){ 

    $("input[placeholder]").each(function() { 
     this.value = $(this).attr('placeholder'); 
    });   

    $("input[placeholder]").focus(function() 
     if (this.value == $(this).attr('placeholder')) this.value = ''; 
    }).blur(function() { 
     if (this.value == '') 
      this.value = $(this).attr('placeholder'); 
    }); 
}