IE 中的占位符

Posted

技术标签:

【中文标题】IE 中的占位符【英文标题】:Placeholders in IE 【发布时间】:2012-02-20 08:08:02 【问题描述】:

我正在使用这个脚本:http://www.morethannothing.co.uk/wp-content/uploads/2010/01/placeholder.js 将一些占位符放入 IE。适用于文本和密码的输入类型。

但似乎没有为文本区域加载。有谁知道我可以添加一行代码,或者执行一些 jQuery 或 javascript 来加载它。

提前致谢。

【问题讨论】:

jQuery 占位符插件是一毛钱,你可能想直接切换到支持textareas 的。这些都可以:place5(我的),jquery-placeholder,jquery-placeholder (2) 同意。占位符插件是一个很好的发现并且非常有用。 【参考方案1】:

$(':text[placeholder],:password[placeholder],textarea[placeholder]')代替$(':text[placeholder],:password[placeholder]')

【讨论】:

你永远不应该使用:text:password 或任何其他 jQuery 组成的选择器(如果你能提供帮助的话),因为不要使用浏览器的 fast,原生选择器引擎,Sizzle 必须通过迭代(在本例中)DOM 中的所有元素来完成所有工作。【参考方案2】:

对于所有输入和文本区域: $('input[placeholder],textarea[placeholder]')

【讨论】:

【参考方案3】:
<script type="text/javascript"> 
    if(navigator.userAgent.indexOf("MSIE") > 0 )
    
        $(function()
        
            var input = document.createElement("input");
            if(('placeholder' in input) == false)
            
                $('[placeholder]').focus(function()
                
                    var i = $(this);
                    if(i.val() == i.attr('placeholder'))
                    
                        i.val('').removeClass('placeholder');
                        if(i.hasClass('password'))
                        
                            i.removeClass('password'); this.type='password';
                        
                    
                ).blur(function()
                
                    var i = $(this);
                    if(i.val() == '' || i.val() == i.attr('placeholder'))
                    
                        if(this.type=='password')
                        
                            i.addClass('password'); this.type='text';
                        
                        i.addClass('placeholder').val(i.attr('placeholder'));
                    
                ).blur().parents('form').submit(function()
                
                    $(this).find('[placeholder]').each(function()
                    
                        var i = $(this);
                        if(i.val() == i.attr('placeholder')) i.val('');
                    );
                );
            
        );
    


    </script>

【讨论】:

以上是关于IE 中的占位符的主要内容,如果未能解决你的问题,请参考以下文章

在 IE 中的占位符上触发 jQuery 输入事件

IE浏览器中的占位符文本问题(8-9)

IE 中与 jquery 验证器一起使用的占位符

占位符 Internet Explorer 11 未显示

jquery占位符表单在ie中提交

Javascript 检查 IE8 中的原生占位符支持