jQuery:在用户开始键入后更改输入值颜色

jQuery:在用户开始键入后更改输入值颜色,jquery,forms,input,Jquery,Forms,Input,我有一个表单输入,里面有示例搜索关键字 当用户聚焦输入时,文本消失,如果输入中没有任何内容,则文本在未聚焦时重新出现 这一切都很好,效果也很好,但我想做的是让示例文本变灰,然后在用户实际键入时使用正常的纯色 下面是我目前使用的代码。任何帮助都会很好 $(function() { $('input').each(function() { $.data(this, 'default', this.value); }).focus(function() { if (!$.data(th

我有一个表单输入,里面有示例搜索关键字

当用户聚焦输入时,文本消失,如果输入中没有任何内容,则文本在未聚焦时重新出现

这一切都很好,效果也很好,但我想做的是让示例文本变灰,然后在用户实际键入时使用正常的纯色

下面是我目前使用的代码。任何帮助都会很好

$(function() {
$('input').each(function() {
    $.data(this, 'default', this.value);
}).focus(function() {
    if (!$.data(this, 'edited')) {
        this.value = "";
    }
}).change(function() {
    $.data(this, 'edited', this.value != "");
}).blur(function() {
    if (!$.data(this, 'edited')) {
        this.value = $.data(this, 'default');
    }
});
});

使用
.css()
颜色
样式添加到
输入

使用
.css()
颜色
样式添加到您的
输入

中,如下所示

$(function() {
    $('input').each(function() {
        $.data(this, 'default', this.value);
    }).css("color","gray")
    .focus(function() {
        if (!$.data(this, 'edited')) {
            this.value = "";
            $(this).css("color","black");
        }
    }).change(function() {
        $.data(this, 'edited', this.value != "");
    }).blur(function() {
        if (!$.data(this, 'edited')) {
            this.value = $.data(this, 'default');
            $(this).css("color","gray");
        }
    });
});

只需先将其设置为灰色,然后在聚焦时将其设置为黑色,如果再次设置默认文本,则将其设置为灰色。

像这样吗

$(function() {
    $('input').each(function() {
        $.data(this, 'default', this.value);
    }).css("color","gray")
    .focus(function() {
        if (!$.data(this, 'edited')) {
            this.value = "";
            $(this).css("color","black");
        }
    }).change(function() {
        $.data(this, 'edited', this.value != "");
    }).blur(function() {
        if (!$.data(this, 'edited')) {
            this.value = $.data(this, 'default');
            $(this).css("color","gray");
        }
    });
});


只需先将其设置为灰色,然后在聚焦时将其设置为黑色,如果再次设置默认文本,则将其设置为灰色。

我建议使用类似labelOver的插件,而不是将输入的文本和样式弄乱


我建议使用像labelOver这样的插件,而不是乱搞输入的文本和样式

HTML5中有placeholder=“something”属性。你会说, 我认为这是最好的答案,因为Jquery不需要这样做。

HTML5中有placeholder=“something”属性。你会说, 我认为这是最好的答案,因为Jquery不需要这样做