IE7输入:焦点

我有以下CSS在IE7中不起作用。

input:focus{border-width: 2px;border-color: Blue; border-style: solid;} 

基本上,我只想在输入聚焦时设置边框属性。 适用于Firefox等…如果有人能解释为什么它不能在IE 7中工作并建议一个可能的解决方法,我们将不胜感激。 谢谢。

这个问题的一个已知答案是使用以下代码:

  sfFocus = function() { var sfEls = document.getElementsByTagName("INPUT"); for (var i=0; i 

这是css风格

 input:focus, input.sffocus{background-color:#DEEFFF;} 

问题是IE根本不承认这种风格。

编辑:你可以在这里找到一个使用原型的解决方案: http : //codesnippets.joyent.com/posts/show/1837

我理解不想添加事件的愿望,但在这种情况下,看起来MSIE7在这一点上是混蛋,需要被黑客攻击。 在你对@ Ape-in​​ago的评论中,你表明你正在使用jQuery。 这是jQuery的解决方案。 我在MSIE 6和7中对此进行了测试,它看起来像你想要的那样。

   

如果你正在使用jQuery 1.7+,那么你会发现不再推荐使用’Live’,新的替代品是’。”,所以上面使用的代码#DotNetWise会读到:

 $.browser.msie && $.browser.version < 8 && $("input,select,textarea").on({ focus: function(){ $(this).removeClass("blur").addClass("focus"); }, blur: function(){ $(this).removeClass("focus").addClass("blur"); } }); 

一个jQuery更简单,更好的解决方案,适用于所有输入,即使是后来动态附加的那些:

  $.browser.msie && $.browser.version < 8 && $("input,select,textarea").live("focus", function(){ $(this).removeClass("blur").addClass("focus"); }).live("blur", function() { $(this).removeClass("focus").addClass("blur"); }); 

CSS示例:

 input[type='text']:focus, input[type='text'].focus { border: 1px solid red; } 

在这种情况下,最好获得javascript的帮助

它几乎可以工作

这个问题是,当有问题的元素有焦点,你打开另一个窗口,然后返回到有问题元素的页面,它的样式不正确:(