在WebKit和火狐,在文本input
的placeholder
棒周围focus
-它并没有消失,直到input.val
真正拥有它的东西。
有没有什么好方法可以强制 IE10 做同样的事情?
在WebKit和火狐,在文本input
的placeholder
棒周围focus
-它并没有消失,直到input.val
真正拥有它的东西。
有没有什么好方法可以强制 IE10 做同样的事情?
来自Internet Explorer 开发人员中心的:-ms-input-placeholder 伪类文档似乎暗示这是按设计工作的。
占位符文本以指定的样式显示,直到该字段获得焦点,这意味着可以键入该字段。当字段获得焦点时,它返回到输入字段的正常样式并且占位符文本消失。
编辑:如果我必须模仿这种行为,我会看看占位符 polyfill 库(设置默认值,在输入框上浮动灰色文本等),它适用于旧版本的 IE。它们必须被修改,因为它们可能具有检测占位符功能并遵从浏览器的功能。此外,这会产生“浏览器检测”代码气味。
更新: 一个“IE占位符文本消失”的问题是一个Twitter时问#AskIE 2014年6月19日,问题会议,并@IEDevChat 回答:“我们有一个活跃的错误这种行为下一个版本将提供一个补丁。”
在 IE 10+ 中没有让占位符保持在字段焦点上的好方法,但是如果您尝试用占位符替换标签,那么您应该看看这个。
http://mozmonkey.com/2014/02/css-only-placeholders-field-labels-ie-float-labels/
这是一种结合占位符和标签来改善用户体验的方法。
我想我会分享我用来解决这个问题的解决方法,因为 IE11 似乎仍然没有修复。
在我的示例中 - IE11 已将我的占位符值添加为 textarea 中的实际值。
这是我在模板视图中的内容:
<textarea placeholder="Type your message">
</textarea>
这是在 IE11 中前端呈现的内容:
<textarea placeholder="Type your message">
Type your message
</textarea>
因此,当用户专注于该字段时 - 他们的光标位于 '..message here' 字符串的末尾 - 很奇怪!
我的解决方法是在加载时向元素添加一个初始类。然后是一个基本的“焦点”绑定事件来检查类是否存在 - 如果存在,它会删除 val 然后也删除类。因此,只要用户关注该字段 - 该值就会重置为空字符串。
这是绑定事件(这个特定的例子是在动态加载的模式上 - 你可以简化这个):
$(document).on( "focus", '.textarea', function () {
if ($(this).hasClass('placeholder-val-present')) {
$(this).val("").removeClass('placeholder-val-present');
}
});
这很有效,因为当用户退出该字段时 - 重新添加占位符并且它可以正常工作,正如您在 IE11 和所有其他浏览器中所期望的那样。
我敢肯定这是一个非常小众的例子 - 但它可能对其他人有用!
诀窍是在输入元素上调用 focus() 和 select() 。
$("#elementId" ).focus();
$("#elementId" ).select();