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

时间:2011-06-17 17:12:49

标签: jquery forms input

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

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

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

以下是我目前正在使用的代码。任何帮助都会很棒!

$(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');
    }
});
});

4 个答案:

答案 0 :(得分:5)

喜欢这个吗?

$(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");
        }
    });
});

http://jsfiddle.net/afcpb/

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

http://api.jquery.com/css

使用.css()color样式添加到input

答案 3 :(得分:0)

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

http://remysharp.com/2007/03/19/a-few-more-jquery-plugins-crop-labelover-and-pluck/#labelOver