2012-04-26 40 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'); 
    }); 
}