如何让 HTML 文本框在空时显示提示?

IT技术 javascript html
2021-02-06 22:47:46

我希望我的网页上的搜索框以灰色斜体显示“搜索”一词。当框获得焦点时,它应该看起来就像一个空文本框。如果里面已经有文本,它应该正常显示文本(黑色,非斜体)。这将帮助我通过移除标签来避免混乱。

顺便说一句,这是一个页面上的Ajax搜索,所以它没有按钮。

6个回答

另一种选择,如果您很高兴仅对较新的浏览器具有此功能,则使用 HTML 5 的占位符属性提供的支持

<input name="email" placeholder="Email Address">

在没有任何样式的情况下,在 Chrome 中这看起来像:

在此处输入图片说明

您可以在此处HTML5 Placeholder Styling with CSS 中尝试演示

请务必检查此功能浏览器兼容性在 3.7 中添加了对 Firefox 的支持。铬很好。Internet Explorer 仅在 10 中添加了支持。如果您的目标浏览器不支持输入占位符,则可以使用名为jQuery HTML5 Placeholder的 jQuery 插件,然后只需添加以下 JavaScript 代码即可启用它。

$('input[placeholder], textarea[placeholder]').placeholder();
警告开发人员“Internet Explorer 10 和 11 在字段聚焦时不显示占位符,即使该字段为空。”
2021-03-20 22:47:46
@Duke,它适用于 Fx3.7+、(Safari / Chrome)和 Opera。IE9 不支持它,所以我猜 IE8 也不支持。
2021-03-24 22:47:46
是的,我今天才发现 FF3.6 不支持它。
2021-04-05 22:47:46
我想它又移动了。我在这里找到它:github.com/mathiasbynens/jquery-placeholder
2021-04-08 22:47:46

这被称为文本框水印,它是通过 JavaScript 完成的。

或者,如果您使用 jQuery,则有更好的方法:

找到了另一种 jQuery 方法。这个项目托管在@ code.google.com / p / jquery-watermark
2021-03-17 22:47:46
第二个链接坏了。这可能是类似的:digitalbush.com/projects/watermark-input-plugin
2021-03-28 22:47:46
digitalbrush 插件会将“水印”保存到数据库中。它处于测试阶段,自 2007 年以来一直没有更新。我建议改用@JP 建议的code.google.com/p/jquery-watermark
2021-04-01 22:47:46
jQuery 水印插件非常菜鸟,因为它不处理输入与预填充值相同的情况。在这种情况下,它会使您的输入文本再次变灰!
2021-04-01 22:47:46
我认为问题的作者应该回去将@JP 评论标记为最佳答案。
2021-04-04 22:47:46

您可以使用HTML 中属性设置占位符浏览器支持)。可以用CSS改变(虽然浏览器的支持是有限的)。placeholderfont-stylecolor

input[type=search]::-webkit-input-placeholder { /* Safari, Chrome(, Opera?) */
 color:gray;
 font-style:italic;
}
input[type=search]:-moz-placeholder { /* Firefox 18- */
 color:gray;
 font-style:italic;
}
input[type=search]::-moz-placeholder { /* Firefox 19+ */
 color:gray;
 font-style:italic;
}
input[type=search]:-ms-input-placeholder { /* IE (10+?) */
 color:gray;
 font-style:italic;
}
<input placeholder="Search" type="search" name="q">

这现在应该是公认的答案。占位符属性在 2010 年最初发布时可能尚未得到广泛支持,但现在除 IE8 外,所有当前浏览器都支持它。
2021-04-06 22:47:46
正在寻找这个,ta - 进一步信息diveintohtml5.org/forms.html#placeholder
2021-04-12 22:47:46

您可以添加和删除特殊的 CSS 类并使用 JavaScript修改输入值onfocus/ onblur

<input type="text" class="hint" value="Search..."
    onfocus="if (this.className=='hint') { this.className = ''; this.value = ''; }"
    onblur="if (this.value == '') { this.className = 'hint'; this.value = 'Search...'; }">

然后在 CSS 中使用您想要的样式指定一个提示类,例如:

input.hint {
    color: grey;
}
我已经发布了一个答案,它做同样的事情,但以更方便和可维护的方式:stackoverflow.com/questions/108207/...
2021-04-05 22:47:46

最好的方法是使用某种 JavaScript 库(如jQueryYUI)连接您的 JavaScript 事件,并将您的代码放在外部 .js 文件中。

但是如果你想要一个快速而肮脏的解决方案,这就是你的内联 HTML 解决方案:

<input type="text" id="textbox" value="Search"
    onclick="if(this.value=='Search'){this.value=''; this.style.color='#000'}" 
    onblur="if(this.value==''){this.value='Search'; this.style.color='#555'}" />

更新:添加了要求的着色材料。

这对于搜索来说是可以的,但在许多情况下,您不希望在任何提交事件上提交水印。
2021-03-31 22:47:46
@k.robinson 我+1 该声明。这是当时最快、最紧凑的代码。可以使用 javascript 代码块更细粒度地解决它。
2021-04-03 22:47:46