IE8中的jQuery圆角+焦点()

时间:2009-12-18 15:00:14

标签: jquery internet-explorer-8 focus rounded-corners

我正在ASP.NET MVC中开发一个Web应用程序。我最近使用jQuery Rounded Corners插件(http://plugins.jquery.com/project/corners)添加了圆角。这似乎打乱了IE8(但不是6或7,或Firefox),因为我无法再将焦点设置在$(document).ready()中。

以下是问题的一个示例:

    $(document).ready(function() {

        // using jQuery rounded corners plugin
        $("#centre").corners();

        // this doesn't have any effect in IE8
        $("#emailAddress").focus();
    });

其中#centre包含我们的登录页面,而#emailAddress是其中的第一个字段。

emailAddress字段应该获得输入焦点。它在IE6& 7和Firefox,但不是IE8。如果你注释掉两个圆角线,那么它就可以了。

我也尝试将焦点线移动到$(window).load():

    $(window).load(function() {
        $("#emailAddress").focus();
    });

这也不起作用。但是,如果我使用超时设置焦点,那么它可以工作:

    $(document).ready(function() {

        // using jQuery rounded corners plugin
        $("#centre").corners();

        // this doesn't have any effect in IE8
        setTimeout(function() { $("#emailAddress").focus(); }, 100);
    });

我不确定为什么在超时后设置焦点应该有效。可能是因为圆角操作修改DOM(它们在容器的顶部和底部添加一系列DIV以创建圆角边框),这需要一些时间,并且在DOM完成之前发生focus()更新

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

由于你正在执行超时并且它有效,是否可以在文档准备好之后加载表单元素? I.E.用ajax加载或用javascript创建?

我知道JQuery角落试图在每个浏览器中使用CSS3,但如果它是IE,它会产生一堆div。可能是IE6 / 7只需要更长时间,因此不需要超时>