首先,HTML5 完全placeholder
支持input && textarea
.
其次,对于旧版本,这里有一个非常简单的jQuery 插件,可以在 HTML5 和其他 HTML 之间进行管理。换句话说,如果您的浏览器支持 HTML5,它不会做任何事情。只需在 HTML 标记中使用 placeholder 属性,让插件完成工作。
第三,如果您对使用类似的值有疑问,请尝试使用or
开关,例如var val = $(this).val() || $(this).text()
. 请注意,如果您想要的东西在 or 的另一边,这可能会导致不正确的结果,但第一个评估为 true。
最后,如果您不想要那个插件,我仍然建议使用placeholder
属性和以下 JavaScript:
HTML
<textarea id="a" placeholder="text are text?"></textarea>
JS
$(document).on('blur focus', '[placeholder]', function(e) {
var val = $.trim($(this).val() || $(this).text()), // remove use of .trim here if you WANT to ALLOW text are to be a blank space like " "
placeHolder = $(this).prop('placeholder');
switch(e.type) {
case 'focusin':
if (val == placeHolder) $(this).val('').text('');
break;
case 'focusout':
if (val == '') $(this).val(placeHolder).text(placeHolder);
break;
}
});
// the following will make sure all fields having placeholder will start with placeholder in place
$('[placeholder]').each(function(i) { $(this).text($(this).prop('placeholder')); });
注意
我认为$(this).val() || $(this).text()
可能不适用于某些旧版本的 IE,因此您可能需要实际区分,从而编写更长的 if 语句。我只是想在这里显示最短的答案。如果您需要对旧浏览器的更多跨浏览器兼容性,我真的建议已经为您完成所有这些工作的插件。