IE9 HTML5占位符 - 人们如何实现这一目标?

Ada*_*itt 6 html5 placeholder internet-explorer-9

我正在尝试placeholder="xxx"在我的Web应用程序中使用该属性,我不想为IE9提供特殊的视觉效果.人们可以在IE9中为实现此功能提出一些好的建议吗?

我在这里找到了几个链接,但没有一个建议的脚本足够......答案是从2011年中期开始的,所以我想也许有更好的解决方案.也许有广泛采用的jQuery插件?我不想使用任何需要侵入式代码的东西,例如需要某个css类或其他东西.

谢谢.

编辑 - 我还需要这个用于密码输入字段.

// the below snippet should work, but isn't.
$(document).ready(function() {
   initPlaceholders()();
}

function initPlaceholders() {
        $.support.placeholder = false;
var test = document.createElement('input');
if ('placeholder' in test) {
    $.support.placeholder = true;
    return function() { }
} else {
    return function() {
        $(function() {
            var active = document.activeElement;
            $('form').delegate(':text, :password', 'focus', function() {
                var _placeholder = $(this).attr('placeholder'),
                    _val = $(this).val();
                if (_placeholder != '' && _val == _placeholder) {
                    $(this).val('').removeClass('hasPlaceholder');
                }
            }).delegate(':text, :password', 'blur', function() {
                var _placeholder = $(this).attr('placeholder'),
                    _val = $(this).val();
                if (_placeholder != '' && (_val == '' || _val == _placeholder)) {
                    $(this).val(_placeholder).addClass('hasPlaceholder');
                }
            }).submit(function() {
                $(this).find('.hasPlaceholder').each(function() { $(this).val(''); });
            });
            $(':text, :password').blur();
            $(active).focus();
        });
    }
}
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*hen 12

我们只是研究了同样的事情.我们决定重新使用这个主旨,由亚伦·麦考尔,进行一些小的改动之后.它的主要优点是简单易懂的代码:

  1. 删除内核和setup_placeholders部分.只需在匿名函数中立即调用它.

  2. var之前添加test.

对于支持的浏览器placeholder,它只是回归到那.它还处理delegate现有表单中的新输入元素(注意使用).但是不处理动态的新表单元素.它可能会被修改为使用jQuery.on.

如果你不喜欢这个,你可以使用那些之一在这里.但是,其中一些是过于复杂的,或者像setTimeout检测新元素一样有可疑的设计决策.

注意,它需要使用两对parens,因为你正在调用一个匿名函数,然后调用返回的函数(这可能会有不同的因素):

(function () {
  // ...
})()();
Run Code Online (Sandbox Code Playgroud)

  • 为了处理密码字段,需要将它们更改为文本字段(在某些版本的IE中不允许这种情况(在这种情况下,您必须在密码字段旁边创建一个临时文本字段) ).否则它只会显示****而不是占位符文本. (2认同)

cor*_*ews 8

我前段时间写了一个jquery插件,它将占位符支持添加到任何不支持它的浏览器中,并且不执行任何操作.

占位符插件