在Chrome中关注时,占位符不会消失

Kon*_*ten 8 firefox google-chrome placeholder

我根据下面的代码创建了一个输入.

<div>
  <form id="me" runat="server">
  <input id="stuff" type="text" placeholder="Type here" runat="server" />
  </form>
</div>
Run Code Online (Sandbox Code Playgroud)

正如所料,当我开始输入时,占位符文本消失了.这适用于Burning Cat浏览器,但不适用于Shiny Metal浏览器.是什么导致它(样式,服务器标签,其他东西......)?可以做些什么呢?

Paw*_*ski 28

我今天遇到了同样的问题,我想出了一个纯CSS 解决方案:

input:focus::-webkit-input-placeholder {
    color: transparent;
}
Run Code Online (Sandbox Code Playgroud)

  • +1创造力,但我需要指出 - 虽然我真的喜欢**方法 - 但它不是解决方案.这是一个解决方案.我仍然声称这是一个铬的错误.:) (4认同)

A.A*_*nia 10

Firefox和chrome(以及safari)在HTML5占位符上的行为不同.如果您希望chrome在焦点上消失占位符,则可以使用以下脚本:

$('input:text, textarea').each(function(){
    var $this = $(this);
    $this.data('placeholder', $this.attr('placeholder'))
         .focus(function(){$this.removeAttr('placeholder');})
         .blur(function(){$this.attr('placeholder', $this.data('placeholder'));});
});
Run Code Online (Sandbox Code Playgroud)

  • 我真的很喜欢Chrome的占位符方式.如果页面加载的焦点集中在其中一个字段上,它允许您将占位符文本用作表单字段标签. (6认同)
  • 我想把这种行为视为一个错误.我的意思是,如果我需要添加一些JS来使占位符消失,它必须被称为解决方法.或者它是否有正当行为的正当理由? (5认同)
  • 选择器应该是`$('[placeholder]')`因为有许多输入类型不是文本或textarea(电子邮件等),并且可以有占位符.此外,新的jQuery不喜欢(不幸的是)`:text`选择器. (3认同)