如何在firefox和其他不支持html5标签选项的浏览器中获取占位符文本?

mar*_*ion 18 html css firefox internet-explorer-8

这适用于Chrome和支持HTML5中占位符文本的任何其他浏览器

<input id="name" name="name"  type="text" placeholder="Please enter your name..." required /> <br />
Run Code Online (Sandbox Code Playgroud)

但是,它不适用于3.5及更早版本的Firefox,显然是IE8,可能还有其他浏览器.

如何实现相同的功能(最好是在HTML/CSS中 - 如果不是我愿意接受建议),以支持所有旧版浏览器?如果不是每一个浏览器,至少Firefox和IE.

Safari和Chrome已经支持它(或者最新版本).

谢谢.

Que*_*tin 19

有一天我会绕过来正确记录这个,但请看这个例子:http://dorward.me.uk/tmp/label-work/example.html

简而言之 - <label>在透明的位置下<input>使用<div>提供背景颜色和边框.

然后使用JS根据聚焦确定标签是否可见.

当JS不可用时,应用不同的样式来将标签放置在元素旁边.

与使用不同value,这不会使仅显示聚焦内容的设备(例如屏幕阅读器)无法访问内容,并且也适用于该password类型的输入.

  • 这是一个很棒的解决方案.我刚刚在我正在寻找的所有浏览器中检查了该页面,并且它有效.我还没有开始深入研究它,甚至尝试应用它......但似乎你先生......已经为我的问题提供了可靠的答案.谢谢. (2认同)

Flo*_*ian 15

我使用这个:https://github.com/danbentley/placeholder
轻量级和简单的jQuery插件.

  • 它确实有效,只是测试了它.我想你下载了样本并从你的文件系统中打开它.如果你这样做,IE将不会运行JavaScript.您必须在IIS中托管它. (2认同)

小智 7

这是我发现在任何地方工作的最简单的解决方案:

<input id="search" 
   name="search" 
   onblur="if (this.value == '') {this.value = 'PLACEHOLDER';}" 
   onfocus="if (this.value == 'PLACEHOLDER') {this.value = '';}"
/>
Run Code Online (Sandbox Code Playgroud)

用自己的替换PLACEHOLDER.

目前,FF3还不支持"input"元素的"占位符"属性.FF4,Opera11和Chrome8部分支持它,即它们在字段中呈现占位符文本,但是当用户聚焦在字段中时不要删除它,这更糟糕的是根本不支持它.


mar*_*ion 2

顺便说一句...如果有人感兴趣...我发现了一个很好的优雅的解决方案,它是一个非常棒的 jQuery 插件。

它实际上是一行 jQuery,一个缩小的 js 插件,以及输入上的一个简单的类名。

http://labs.thesedays.com/projects/jquery/clearfield/

这是我发现的最美丽的东西,仅次于 html 中的“Placeholder”。