如何使用css更改IE8中禁用的html控件的颜色

Set*_*eno 73 html css internet-explorer

我正在尝试使用以下css禁用它们时更改输入控件的颜色.

input[disabled='disabled']{
  color: #666;     
}
Run Code Online (Sandbox Code Playgroud)

这适用于大多数浏览器,但不适用于IE.我可以更改任何其他样式属性,如背景颜色,边框颜色等...只是不颜色.有谁能解释一下?

Way*_*tin 123

不幸的是,如果您使用disabled属性,无论您尝试什么,IE都会将文本的颜色默认为灰色,带有奇怪的白色阴影......但是所有其他样式仍然有效.: - /

  • 我几乎把这个答案投了下来,但我停了下来.我打算去做,因为我讨厌答案; 不是因为答案错了.投票:p (68认同)
  • @spudly:我很赞,所以你的评论得到了投票. (3认同)
  • 虽然这个答案是"正确的",但我认为对它进行维护并链接到其他SO问题是有用的,这些问题对于记录哪些选项可用于减少情况很有用.例如,将背景颜色强制为白色以使事物更具可读性,使用JS更改为只读+强制模糊onFocus,JS显示div而不是输入 (2认同)

rob*_*cat 15

我对IE10中的<select>元素有同样的问题,并找到了仅适用于select元素的解决方案:

http://jsbin.com/ujapog/7/

有一个Microsoft伪元素允许修改文本颜色:

select[disabled='disabled']::-ms-value {
    color: #000;
}
Run Code Online (Sandbox Code Playgroud)

规则必须独立,因为否则其他浏览器会因语法错误而忽略整个规则.有关其他仅限Internet Explorer的伪元素,请参阅http://msdn.microsoft.com/en-us/library/ie/hh869604(v=vs.85).aspx.

编辑:我认为该规则可能应该是select[disabled]::-ms-value但我没有在我面前试用它的旧IE版本 - 重新编辑这一段或添加评论,如果这是一个改进.


Ham*_*oli 8

无法覆盖disable ="disable"属性的样式.这是我解决这个问题的工作,注意我只在我的情况下选择提交按钮:

if ($.browser.msie) {
    $("input[type='submit'][disabled='disabled']").each(function() {
        $(this).removeAttr("disabled");
        $(this).attr("onclick", "javascript:return false;");
    });
}
Run Code Online (Sandbox Code Playgroud)

示例:http://jsfiddle.net/0dr3jyLp/