我试图弄清楚如何在页面加载时将文本字段的input
值设置为它的title
值,作为一种展示方式占位符文本。我使用的是HTML4 Strict doctype。我不想将占位符文本存储在输入值中,因为我不希望没有javascript的人在输入之前删除文本。我想用javascript添加它,然后在输入获得焦点时删除。我有focus()
和blur()
方法,但我无法弄清楚如何编写初始页面加载函数以将输入的标题传递给val()
函数。
我目前有这段代码:
// This doesn't work, it grabs the page title:
$('#item-search').val(this.title);
// Works:
$('#item-search').focus(function() {
if (this.value == this.title) {
this.value = '';
}
});
// Works:
$('#item-search').blur(function() {
if (this.value == '') {
this.value = this.title;
}
});
答案 0 :(得分:5)
只是要添加其他变体,.val()
可以accept a function as its parameter,修复this
问题:
$('#item-search').val(function () {
return this.title;
});
答案 1 :(得分:3)
this
指的是当前范围。在您的第一个示例中,它引用了document
。
你可能想要。
$('#item-search').val($('#item-search').attr('title'));
更好:
var $itemSearch = $('#item-search');
$itemSearch.val($itemSearch.attr('title'));
答案 2 :(得分:2)
$('#item-search').val(this.title);
在此行[{1}}中引用文档(this
)并设置html
。为了完成你的工作,请执行以下操作:
<title>
答案 3 :(得分:1)
试试这个:
$('#item-search').val($('#item-search').attr('title'));
答案 4 :(得分:1)
请试一试。
$('#item-search').val($("#item-search").attr("title"));