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

我试图改变input控件的颜色,当他们被禁用使用下面的CSS。

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

这适用于大多数浏览器,但不适用于IE。 我能够改变任何其他的风格属性,如背景颜色,边框颜色等…只是不是颜色。 任何人都可以解释吗?

不幸的是,如果你使用disabled属性,无论你尝试什么IE浏览器,只需将文本的颜色默认为灰色,带有一个奇怪的白色阴影…的东西…但所有其他样式仍然可以工作。 : – /

我对IE10中的 <select>元素有同样的问题,并find了一个只适用于select元素的解决scheme:

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

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

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

该规则必须独立运行,否则其他浏览器将由于语法错误而忽略整个规则。 请参阅http://msdn.microsoft.com/en-us/library/ie/hh869604(v=vs.85).aspx其他Internet Explorer仅伪元素。

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

没有办法覆盖disable =“disable”属性的样式。 这里是我的工作,以解决这个问题,注意我只是在我的情况下select提交button:

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

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

我知道自从创build这个话题以来已经有一段时间了,但是我创build了这个解决方法,而且…它对我有用! (使用IE 9)

唯一的后果是你不能selectinput的值。

使用Javascript:

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

我有同样的问题textarea“禁用”更改字体颜色为灰色。 我做了一个解决方法,使用“只读”属性,而不是“禁用”属性textarea与下面的CSS

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

它对我来说就像一个魅力!!所以我build议在任何其他解决scheme之前先尝试这一点,因为它很容易用“只读”replace“禁用”,而无需更改任何其他代码部分。

我只是把整个背景变成浅灰色,我觉得更容易/快速传达的是盒子被禁用。

 input[disabled]{ background: #D4D4D4; } 

我解决了在IE浏览器中“禁用”控件的问题,而没有使用types=checkbox的input控件的丑陋灰色的问题是,将它保留为启用状态,并在onclick事件中使用一些javascript来防止更改:

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

正如韦恩所说,三年后,仍然没有运气瓦特/ IE9,但…

你可以尝试使用CSS降低opacity ,这使得它更具可读性,并有助于整个禁用状态。

这是我为这个问题find的解决scheme:

//如果IE

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

//其它浏览器

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

通过使用这个技巧,你可以添加样式表到您的input元素,在IE和其他浏览器不可编辑的input框中工作。

我混合user1733926和Hamid的解决scheme,我发现一个有效的IE8代码,将很高兴知道它是否在ie 9/10(?)。

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

在阅读这篇文章后,我决定创build一个类似于禁用input框的input,但是是“只读”的。

所以我已经做到了,所以它不能被select或标签,或者有​​一个鼠标光标,给了用户他们可以改变或select值的想法。

testing了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; } 

没有必要重写CSS使用类的方法,并与事件玩完美的作品

你可以做一件事:

 <button class="disabled" onmousedown="return checkDisable();"> function checkDisable() { if ($(this).hasClass('disabled')) { return false; } } 

http://navneetnagpal.wordpress.com/2013/09/26/ie-button-text-shadow-issue-in-case-of-disabled/

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

例如对于深灰色,

  input[readonly]{ color: #333333; } 

请检查这个CSS代码。

 input[type='button']:disabled, button:disabled { color:#933; text-decoration:underline; } 

或者检查这个URL。 http://jsfiddle.net/kheema/uK8cL/13/

我遇到了这段代码在stackoverflow,这帮助我起飞使用JavaScript禁用CSS类。

 $("#textboxtest").prop("disabled", false).removeClass("k-state-disabled"); 

原始线程可以在应用k-state-disabled类到文本input – Kendo UI思想我应该分享!

使用这个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 }