2009-12-18 19 views
0

我正在ASP.NET MVC中開發一個Web應用程序。我最近使用jQuery Rounded Corners插件添加了圓角(http://plugins.jquery.com/project/corners)。這似乎使IE8(但不是6或7,或Firefox)不安,因爲我不能再在$(document).ready()中設置焦點。在IE8中jQuery圓角+焦點()

這是問題的一個例子:

$(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中。如果你註釋掉兩條圓角線,那麼它就起作用了。

我也曾嘗試重點線移動到$(窗口).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以創建圓角邊框),這需要一些時間,並且focus()在DOM完成之前發生更新?

感謝您的幫助

埃德

+0

對於初學者來說,jQuery圓角插件已有一年多了。 jQuery UI的做法是使用瀏覽器檢測和瀏覽器特定的CSS(如-moz-border-radius)。然而,對於IE來說,jQuery UI完全忽略了圓角,因爲支持就是那麼差。 – 2009-12-18 15:11:28

+0

你可能會考慮使用[Formwin](https://github.com/rocco/formwin) – Rocco 2012-12-11 12:17:25

回答

0

既然你做了超時和它的作品,會不會是以後的文件已經準備好表單元素被加載? I.E.用ajax加載或用javascript創建?

我知道,JQuery的角落試圖使用CSS3每個瀏覽器,但如果它是IE瀏覽器,它使一堆div。難道它只是需要更長的時間在IE6/7中,所以超時是不需要的>