【发布时间】:2014-05-24 08:56:53
【问题描述】:
我发现以下功能可以在 IE6-9 等浏览器上启用类似占位符的效果。 问题是第一次对焦后出现占位符。没有初始值。页面加载后输入框是空白的。
另一件事是,在教程中,我创建了 .placeholder 类并将颜色设置为灰色。它将输入颜色设置为浅灰色,并且在用户键入时不会变为黑色。
var isInputSupported = 'placeholder' in document.createElement('input');
var isTextareaSupported = 'placeholder' in document.createElement('textarea');
if (!isInputSupported || !isTextareaSupported) {
$('[placeholder]').focus(function () {
var input = $(this);
if (input.val() == input.attr('placeholder') && input.data('placeholder')) {
input.val('');
input.removeClass('placeholder');
}
}).blur(function () {
var input = $(this);
if (input.val() == '') {
input.addClass('placeholder');
input.val(input.attr('placeholder'));
input.data('placeholder', true);
} else {
input.data('placeholder', false);
}
}).blur().parents('form').submit(function () {
$(this).find('[placeholder]').each(function () {
var input = $(this);
if (input.val() == input.attr('placeholder') && input.data('placeholder')) {
input.val('');
}
})
});
}
有什么建议吗?
【问题讨论】:
-
准备好后使用焦点。
-
该代码不会尝试在页面加载时初始化输入字段。这就是为什么它不会发生。
-
代码看起来应该工作 - 你能提供一些上下文,它不工作吗?也许是一个带有错误的 JSFiddle?
-
@Pointy 确实如此,它在所有匹配的元素上调用
.blur(),当有空值时,它将初始化占位符。 -
是的,看起来代码在元素存在之前就被触发了。确保您的 Javascript 位于页面底部,或位于
$(document).ready()处理程序中。
标签: javascript jquery html placeholder