在 Chrome 中清除焦点上的 HTML5 占位符属性文本

Posted

技术标签:

【中文标题】在 Chrome 中清除焦点上的 HTML5 占位符属性文本【英文标题】:Clear HTML5 placeholder attribute text on focus in Chrome 【发布时间】:2012-10-01 01:35:12 【问题描述】:

有什么方法可以在 Chrome 中清除焦点上的 placeholder 文本,Firefox 会清除焦点上的文本,但 Chrome 不会。

这会让用户感到困惑,无论是输入栏中的文本还是占位符文本(即使我将文本颜色更改为浅灰色),我不想为此使用不必要的 javascript 或 jQuery,我想要知道是否有一些 html/CSS 解决方案

Demo Fiddle

Chrome 预览版(聚焦)

Firefox 预览版(聚焦)

【问题讨论】:

不要触碰用户预期的行为! @Bondye 如果文本没有在焦点上清除,这实际上很烦人.. 我认为如果文本在焦点上被清除会更烦人。因为他没有在输入中附加标签或名称。所以当我专注时,我不知道我在关注什么...... @Bondye 我确实向他们展示了他们在哪个领域,所以毫无疑问不知道用户关注的是什么;) 那你为什么要使用占位符呢? 【参考方案1】:

尝试使用

input:focus::-webkit-input-placeholder 

    color: transparent;

它将解决问题。由于页面加载时自动聚焦,因此文本在聚焦时可见。

【讨论】:

你去吧,CSS总是有一个解决一切的办法;) cough 使用 hacky 浏览器特定标签 cough :) 太棒了 :) 我必须将它与 !important 标签一起使用,然后它才能正常工作【参考方案2】:

现在 Firefox 以其他方式工作,所以我使用了以下代码:

input:focus::-webkit-input-placeholder
    color: transparent!important;

input:focus::-moz-placeholder
    color: transparent!important;

input:focus:-moz-placeholder
    color: transparent!important;

【讨论】:

2 年后,在这个问题中,我认为这是最有效的问题【参考方案3】:

这就是chrome处理它的方式,chrome用户可能会期望它是这样处理的。但是,您可以使用 jQuery 在“占位符”属性被关注时删除它。

我从一个谷歌群组@https://github.com/mathiasbynens/jquery-placeholder/issues/51#issuecomment-4193018找到了一个明显的解决方法

// Fixing Webkit that not clearing input/textarea when get focus
$(function()
  if ($.browser.webkit) 
    $('input, textarea').on('focus',function()
      if ( $(this).attr('placeholder') ) $(this).data('placeholder', $(this).attr('placeholder')).removeAttr('placeholder');
).on('blur', function()
        if ( $(this).data('placeholder') ) $(this).attr('placeholder', $(this).data('placeholder')).removeData('placeholder');
    );
  
);

【讨论】:

这个答案值得关注,它与浏览器兼容,而其他的则是“-webkit-”特定的。 $.browser 已经被弃用很长时间了。为了仍然使用它,您需要在核心 jQuery 库之后加载 jQuery 的迁移脚本。我建议改用 CSS 修复。【参考方案4】:

我发现 Shubhanshu 的解决方案对我不起作用,但我确实在 CSS tricks 上找到了这个在 Chrome 中有效,但似乎在 FF 中无效。

[placeholder]:focus::-webkit-input-placeholder 
  color: transparent;

【讨论】:

【参考方案5】:

input:hover::placeholder 

  color: transparent;
    <input type="text" id="fname" name="firstname" placeholder="Your name..">

【讨论】:

以上是关于在 Chrome 中清除焦点上的 HTML5 占位符属性文本的主要内容,如果未能解决你的问题,请参考以下文章

css 在焦点上清除搜索表单输入占位符文本

如何在 HTML5 的数字输入中显示占位符的文本

如何删除焦点上的占位符[重复]

模型驱动表单 - IE11 上的输入占位符问题

如何更改焦点上的占位符颜色?

用 Chrome 中的自定义文本替换默认的 html5 日期占位符