在类型后删除占位符(而不是在焦点后)

时间:2012-04-10 10:17:11

标签: jquery css input placeholder

我正在使用Daniel Stocks的jQuery占位符插件。

这是插件: https://github.com/danielstocks/jQuery-Placeholder/blob/master/jquery.placeholder.js

除了以下小问题外,它对所有字段都有效: 在Chrome中,当焦点位于字段上时,占位符会保留,直到您键入内容为止。但在IE和FF中,占位符文本在焦点后被删除。 我希望他们都喜欢在Chrome中表现。

事情是在chrome中,占位符是本机支持的,所以即使没有插件,它也会按照我喜欢的方式工作。在FF中它没有插件也有效,除了前面提到的问题。在IE浏览器中,没有插件就可以正常工作,正如您可能已经猜到的那样。

4 个答案:

答案 0 :(得分:4)

我是该插件的作者。如果您确实要禁用Chrome的原生支持,可以在代码中编辑第71行:

var NATIVE_SUPPORT = !!("placeholder" in document.createElement( "input" ));

为:

var NATIVE_SUPPORT = false

通过这样做,您只需使所有浏览器都使用该插件,即使是那些具有本机支持的插件。

我想指出,这不仅仅是“Chrome”定义的行为。 Safari(以及iOS上的移动游戏)就是这样的。这些用户很可能“习惯”这种行为,所以也许可以问一下这个问题,你究竟想要实现什么目标?

答案 1 :(得分:1)

从第77行替换源代码中的以下部分:

input.focus(function() {
    placeholder.hide();
});

用这个:

input.keyup(function() {
    if (input.val() != "") {
        placeholder.hide();
    }
});

答案 2 :(得分:1)

我需要类似的东西,并为你提到的jquery ui占位符插件制作了一些mod。

http://jsfiddle.net/sigmabetatooth/5j55m/

随意反对并分享您的想法。

您也不会通过退格键或其他方式清除字段,占位符返回,当占位符存在时选择输入,光标将放在文本的开头。

@Daniel如果你有兴趣我把它推给你,请告诉我。

答案 3 :(得分:0)

您可以使用

在IE中制作占位符

//在IE中设置占位符

$('input[type="text"]').each(function(){        
    var input = $(this);                
    $(input).val(input.attr('placeholder'));                
    $(input).focus(function(){
         if (input.val() == input.attr('placeholder')) {
            input.val('');
         }
    });     
    $(input).blur(function(){
        if (input.val() == '' || input.val() == input.attr('placeholder')) {
            input.val(input.attr('placeholder'));
        }
    });
});