IE7输入:焦点

时间:2009-06-09 00:58:24

标签: jquery css internet-explorer-7 css-selectors

我有以下在IE7中无效的CSS。

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

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

6 个答案:

答案 0 :(得分:14)

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

<script type="text/javascript">
$(document).ready(function(){
    if (jQuery.browser.msie === true) {
        jQuery('input')
            .bind('focus', function() {
                $(this).addClass('ieFocusHack');
            }).bind('blur', function() {
                $(this).removeClass('ieFocusHack');
            });
    }

});
</script>
<style>
input:focus, input.ieFocusHack
{
    border-width: 2px;
    border-color: Blue;
    border-style: solid;
}
</style>

答案 1 :(得分:12)

此问题的已知答案是使用以下代码:

    sfFocus = function() {
    var sfEls = document.getElementsByTagName("INPUT");
    for (var i=0; i<sfEls.length; i++) {
        sfEls[i].onfocus=function() {
            this.className+=" sffocus";
        }
        sfEls[i].onblur=function() {
            this.className=this.className.replace(new RegExp(" sffocus\\b"), "");
        }
    }}
if (window.attachEvent) window.attachEvent("onload", sfFocus);

这是css风格

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

问题在于IE根本无法识别这种风格。

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

答案 2 :(得分:4)

如果你正在使用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");
    }
});

答案 3 :(得分:1)

一个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;
}

答案 4 :(得分:1)

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

答案 5 :(得分:0)