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


74

我尝试使用以下CSS禁用输入控件时更改其颜色。

input[disabled='disabled']{
  color: #666;     
}

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


2
#666; 让我有点咯咯笑:)
Kimi

1
这并不是本意,它只是禁用控件的良好灰色。
塞斯·里诺

看到此评论stackoverflow.com/a/5486152/2906042 它对我有帮助)
Aksana Tolstoguzova 2015年

Answers:


123

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


1
是的,但是为什么呢?它在幕后使用某种非标准的滤镜样式还是其他?
塞斯·里诺

68
我差点否决了这个答案,但我停下来了。我之所以这样做,是因为我讨厌答案。不是因为答案是错误的。投票:p
Stephen Sorensen,

我认为这与“友好错误页面”属于同一类别,M $只是在试图提供帮助
guzart 2012年

2
尽管这个答案是“正确的”,但我认为将其维基化并链接到其他SO问题非常有用,这些问题有助于记录哪些可用选项可以减少情况。例如强制背景色为白色,使事情更加可读,使用JS改变到只读+力模糊的onfocus,JS,以显示一个div代替输入
Snekse

到现在已经4年了,有什么改进吗?
Venzentx

16

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

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

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

select[disabled='disabled']::-ms-value {
    color: #000;
}

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

编辑:我认为规则可能应该是,select[disabled]::-ms-value但是我没有更老的IE版本可以尝试-重新编辑本段或添加注释(如果有改进的话)。


我已经尝试过IE10和IE11,并且可以使用。注意禁用属性。您可以用不同的方式定义它。这可能是disableddisabled=""disabled="true"disabled="disabled"。不幸的是,它在IE9中不起作用。
Marek 2014年

8

没有方法可以覆盖disable =“ disable”属性的样式。这是解决此问题的方法,请注意,在这种情况下,我仅选择提交按钮:

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

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


4

我在将字体颜色更改为灰色的情况下禁用了textarea时遇到了同样的问题。我通过使用以下CSS的textarea使用“ readonly”属性而不是“ disabled”属性来进行变通

textarea[readonly] {
border:none; //for optional look
background-color:#000000; //Desired Background color        
color:#ffffff;// Desired text color
}

它像我的魅力一样对我起作用!!因此,我建议先尝试使用此方法,然后再使用其他解决方案,因为很容易用“只读”替换“已禁用”而无需更改任何其他代码部分。


对我来说最好的解决方案。简单高效。
加斯顿

3

我知道自创建该主题以来已经有一段时间了,但是我创建了此变通办法,很好……它对我有用!(使用IE 9)

唯一的结果是您无法选择输入的值。

使用Javascript:

    if (input.addEventListener)
            input.addEventListener('focus', function(){input.blur()}, true)
    if (input.attachEvent)
            input.attachEvent("onfocus", function(){input.blur()})

该解决方案具有令人讨厌的可用性副作用,即阻止用户能够通过复选框跳到下一个控件-yuck。尤其是因为您已经破坏了跨浏览器的可用性。
robocat 2014年

2

我只是将整个背景设置为浅灰色,我认为更容易/迅速传达出该框已禁用。

input[disabled]{
  background: #D4D4D4;     
}

1
知道为什么要对此一票否定吗?它可以在IE,FF和Chrome的最新版本中使用...
Wouter 2013年

3
以前不是IE8吗?
fncomp

1

我解决了在IE中禁用“不带灰色灰色且输入类型为=复选框的控件”的问题的方法是使其保持启用状态,并在onclick事件中使用一些javascript来防止更改:

onclick='this.checked == true ? this.checked = false : this.checked = true;'

3
我认为onclick='return false;'做同样的事情但更简单
philfreo 2011年

1

正如韦恩(Wayne)所提到的,三年后仍然没有IE9的运气,但是...

您可以尝试降低opacityCSS的使用率,使其更具可读性,并有助于解决整个禁用状态。


0

这是我针对此问题找到的解决方案:

//如果是IE

inputElement.writeAttribute(“ unselectable”,“ on”);

//其它浏览器

inputElement.writeAttribute(“ disabled”,“ disabled”);

通过使用此技巧,可以将样式表添加到在IE和其他浏览器上不可编辑的输入框上可以使用的输入元素。


0

我混合使用user1733926和Hamid的解决方案,发现了IE8的有效代码,很高兴知道它是否也可以在9/10中工作(?)。

<script type="text/javascript">
if ($.browser.msie) {
    $("*[disabled='disabled']").each(function() {
        $(this).removeAttr("disabled");
        $(this).attr("unselectable", "on");
    });
}
</script>

0

阅读这篇文章后,我决定创建一个输入,该输入的行为类似于禁用的输入框,但它是“只读”的。

因此,我做到了,因此无法对其进行选择或制表,也无法通过鼠标光标向用户提供可以更改或选择值的想法。

在IE8 / 9,Mozzila 18,Chrome 29上测试

<input name="UserName" class="accountInputDisabled" id="UserName" type="text" readOnly="readonly" value="" unselectable="on" tabindex="-1" onselectstart="return false;" ondragstart="return false;" onmousedown='return false;'/>


input.accountInputDisabled {
    border: 1px solid #BABABA !important;
    background-color: #E5E5E5 !important;    
    color: #000000;
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -moz-user-input: disabled;
    -ms-user-select: none;
    cursor:not-allowed;
}

input:focus {
    outline: none;
}          


0

删除禁用的属性并使用只读属性。编写所需的CSS以获得所需的结果。这适用于IE8和IE9。

例如,对于深灰色,

 input[readonly]{
   color: #333333;     
 }

readonly忽略属性,如果值type属性hiddenrangecolorcheckboxradiofilebutton因此它可能并不如预期的所有输入工作
Frinsh




-2

使用此CSS,适用于IE11:

input[disabled="disabled"], select[disabled="disabled"], textarea[disabled="disabled"] {
    opacity:0.99 !important;
    background:black;
    text-shadow:inherit;
    background-color:white;
    color:black
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.