【发布时间】:2014-09-27 16:22:05
【问题描述】:
我想要一个用于输入的占位符。我开始测试 Chrome、Mozilla 和 IE 10(IE8 待定)。
属性占位符在 chrome 和 mozilla 中可以正常工作。但在 IE 10 中表现得很奇怪。当焦点转到输入时,文本甚至在将内容写入输入之前就消失了。
我发现这是 IE 中的一个错误。后来又换了@Placeholder using jQuery。这在 IE 10、Mozilla 和 Chrome 中运行良好。不确定它是否也适用于 IE 8。
我的问题在这里:
使用 jQuery 创建的占位符会比内置的 css 属性“占位符”更好吗? 如果 jQuery 的性能不好,我会坚持 CSS 属性并继续处理有缺陷的 IE 行为。这很重要,因为我正在开发的页面将具有最大负载。另外,我必须在 IE 8 中测试这个 jQuery。
提供答案后的解决方案: 我决定使用 jQuery 创建的 CSS,原因如下:
- IE 8 不支持属性占位符。
- IE 10 存在占位符行为的错误。
- 一个小的 jQuery 插件将与 IE、Mozilla 和 Chrome 兼容。 Ans 可以根据我的方便进行修改。
- 我正在设计的页面将有 MAX 4 个输入字段。由于页面上的项目较少,性能并不重要,尽管 CSS 的性能更好。
【问题讨论】:
-
它 不是 IE 中的一个错误,正如 HTML5 specification 所说:“当元素的值为空时,用户代理应该向用户 [snip] 显示此提示字符串或控件未获得焦点(或两者兼有),例如通过将其显示在空白未获得焦点的控件中并以其他方式隐藏它。”因此,占位符文本不需要在控件获得焦点时呈现。
-
@rink.attendant.6 谢谢。我将在这里添加我的要求:
-
如果您使用 jQuery 插件,您将获得更一致的行为。使用内置 HTML 功能意味着您受制于每个浏览器如何实现这些功能。
-
但性能可能会更差,因为它必须为每个输入运行 Javascript,而不是使用浏览器的内置代码。
-
你不应该依赖占位符,因为旧的浏览器没有它们。除了占位符之外,您还应该有一个标签,以便用户在关注第一个输入时仍然知道他们应该输入的内容。