0

我试图弄清楚如何将input文本字段的值设置为title页面加载时的值,作为显示占位符文本的一种方式。我正在使用 HTML4 Strict 文档类型。我不想将占位符文本存储在输入值中,因为我不希望没有 javascript 的人在输入之前必须删除文本。我希望用 javascript 添加它,然后在输入获得焦点时将其删除。我有focus()andblur()方法工作,但我不知道如何编写初始页面加载函数以将输入的标题传递给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;
    } 
});
4

5 回答 5

5

只是为了添加另一个变体,.val()可以接受一个函数作为它的参数,解决你的this问题:

$('#item-search').val(function () {
    return this.title;
});
于 2012-04-16T17:33:50.130 回答
3

this指当前范围。在您的第一个示例中,它指的是document.

你可能想要。

$('#item-search').val($('#item-search').attr('title'));

更好的是:

var $itemSearch = $('#item-search');
$itemSearch.val($itemSearch.attr('title'));
于 2012-04-16T17:29:43.217 回答
2
$('#item-search').val(this.title);

在这一行this中,参考 document( html) 并设置<title>. 要完成您的工作,请执行以下操作:

$('#item-search').val($('#item-search').attr('title'));
于 2012-04-16T17:30:37.260 回答
1

试试这个:

$('#item-search').val($('#item-search').attr('title')); 
于 2012-04-16T17:30:04.073 回答
1

请试试这个。

$('#item-search').val($("#item-search").attr("title"));
于 2012-04-16T17:33:10.240 回答