2

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

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

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

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

4

4 回答 4

4

我是插件的作者。如果你真的想禁用对 Chrome 的原生支持,你可以编辑代码中的第 71 行:

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

至:

var NATIVE_SUPPORT = false

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

我想指出,这不仅仅是“Chrome”定义的行为。Safari(和 iOS 上的移动 Safari)就是这样运行的。这些用户很可能“习惯”了这种行为,所以也许会问一个问题,你到底想达到什么目的?

于 2012-04-10T11:30:50.077 回答
1

我需要类似的东西,并对你提到的 jquery ui 占位符插件做了一些修改。

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

随时反对它并分享您的想法。

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

@Daniel 如果您有兴趣我将其推送给您,请告诉我。

于 2012-07-19T23:32:15.553 回答
1

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

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

有了这个:

input.keyup(function() {
    if (input.val() != "") {
        placeholder.hide();
    }
});
于 2012-04-10T10:21:12.090 回答
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'));
        }
    });
});
于 2012-06-04T09:33:21.343 回答