【问题标题】:Change text color on focus and have it remain that color after focus has left (onblur)更改焦点上的文本颜色并在焦点离开后保持该颜色(onblur)
【发布时间】:2013-02-07 15:28:44
【问题描述】:

一个 CSS 和可能是 Javascript 的问题。我希望交替行具有不同的颜色,默认文本为灰色。但是,一旦输入字段具有焦点,我希望新文本为黑色,然后在字段不再具有焦点后保持黑色。这是我到目前为止所做的:

input {
   font-family:Verdana, Trebuchet MS;
   font-size:11px;
   vertical-align:top;
}

input:focus {
    color: black;
}

input.odd {
   color: #888;
   background:#FFFFB4;
}

input.even {
   color: #888;
   background:#FFD9C8;
}

此代码实现了我对交替行具有不同颜色和默认文本为灰色的要求。但是,新文本是灰色的,而不是黑色的。那么如何让新文本保持黑色。

更新的 CSS

input {
   font-family:Verdana, Trebuchet MS;
   font-size:11px;
   vertical-align:top;
}

input.odd {
   color: #888;
   background:#FFFFB4;
}

input.even {
   color: #888;
   background:#FFD9C8;
}

input.odd:focus, input.even:focus, input.odd.hasText, input.even.hasText {
    color: black;
}

新的 jQuery 代码

$('input').focus(function() {
   $(this).addClass('hasText');
});

【问题讨论】:

    标签: javascript css


    【解决方案1】:

    你很可能想要

    input.odd:focus,input.even:focus {
        color: black;
    }
    

    如果您的意思是文本在失去焦点后恢复为灰色,您可能需要在输入文本后通过 javascript 添加一个类并让该类与您的焦点类匹配。

    编辑

    类似:

    $('input').focus(function(){
        $(this).addClass('hasText');
    });
    

    然后在你的 CSS 中有:

    input.even:focus,input.odd:focus,input.hasText{
        color: black;
    }
    

    【讨论】:

    • 谢谢,这解决了我在有焦点时让新文本显示为黑色的要求。然而,焦点离开后文本变为灰色。即使在焦点离开后,是否可以让文本保持黑色?
    • 我不这么认为,仅通过 CSS。但是你可以使用javascript。我将添加一个编辑。我可能是错的,但我很确定 CSS 无法确定输入中是否包含文本。
    • 谢谢,我试过你的编辑。但是,在焦点离开输入文本后,文本仍会变回灰色。
    • 哦,您可能需要input.odd.hasTextinput.even.hasText。查看 Firebug 以查看哪个 CSS 选择器具有先例,并确保您创建了一个覆盖它的选择器。我会尝试一个 JSFiddle。
    • 这对我有用。 input.odd:focus, input.even:focus, input.odd.hasText,input.even.hasText 作为选择器。 jsfiddle.net/V8CbH
    猜你喜欢
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 2018-04-14
    • 2013-01-02
    相关资源
    最近更新 更多