jQuery设置input.value = input.title(或其他输入属性)

时间:2012-04-16 17:27:14

标签: javascript jquery forms this

我试图弄清楚如何在页面加载时将文本字段的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;
    } 
});

5 个答案:

答案 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"));