2012-05-19 117 views
2

我知道別人之前遇到過這個問題。我已經搜索並嘗試了各種不同的解決方案(包括JQuery focusJQuery Problem .... Focus not workingJQuery focus() is not focusing in IE but it is in Chrome),但沒有任何工作。jQuery的重點不在IE中工作

當代碼在FF和Chrome中運行時,焦點按照應有的順序進行。但是,在IE(我使用IE9),沒有這樣的運氣。重點不放在輸入文本上。任何援助將不勝感激。

// textInputArray contains the input field along with some other html with instructions 
// about the input field 
$("input.answerBox").live("keypress", function(event) { 
    if ((event.which == 13) && (i < textInputArrayLength)){ 
       $("div.textInput").html(textInputArray[i]) 
        .fadeIn(200); 
       $("input.focus:last").focus(); 
       i++; 
      } 
} 

再說一次,FF和Chrome中的所有功能都可以正常工作,但IE瀏覽器不會。 textInput div的內容被替換,但輸入文本框在IE中沒有收到焦點。

編輯:HTML的要求

<div id="menuBar"> 
<ul class="dropdown"> 
<li class="menuLi"><a href="#" class="blank">Item 1</a> 
<ul class="sub_menu"> 
<li class="menuLi"><a href="#" class="blank">Number</a> 
<ul class="sub_sub_menu"> 
<li class="menuLi"><a href="/test/index.php" class="menuItem blank">Sub Item 1</a></li> 
<li class="menuLi"><a href="/test/index.php" class="menuItem blank">Sub Item 2</a></li> 
</ul> 
</ul> 
</ul> 
<br> 
</div> 
<div id="main"> 
<h1 class="header1">Quick Quiz</h1> 
<div class="textInput"> 
</div> 
</div> 
<div class="footer"></div> 
+0

你可以顯示你的html嗎? –

+1

但在這個http://jsfiddle.net/3s8gr/1/在IE 7的外觀及其工作正常在IE 7中運行它,或者您有任何版本 –

+0

什麼實際你想有兩個漸變效果呢? –

回答

1

它,這是造成某些類型的衝突在IE中.fadeOut(100)

它工作正常,如果我們改變

$("div.textInput").fadeOut(100).html('<input class="textBox focus" type="text">').fadeIn(200); 

隨着

$("div.textInput").html('<input class="textBox focus" type="text">').fadeIn(200); 

http://jsfiddle.net/8mpRg/1/[Run in IE]

+0

好吧,這已經解決了最初沒有在IE中獲得重點的盒子的第一個問題。但是,該問題在循環的後續迭代中仍然存在。我修改了代碼以顯示更多細節。 – Ben

+0

除了'fadeOut()',你行尾的'fadeIn()'也會有類似的效果。原因是IE不支持不透明/淡入淡出;它只能通過ActiveX和'filter'風格來實現,這意味着它不是原生瀏覽器的功能。當您嘗試將其與其他功能結合使用時,會導致各種怪癖和怪異現象。總之,最好避免在IE中褪色,即使使用jQuery來幫助你。 – Spudley

1

我的IE焦點問題也與我使用fadeOut()& fadeIn()有關。 我在短期將焦點代碼,閃爍文本框兩次和復位重點:

$('#friend_name').focus(); 
$('#friend_name').fadeOut(400); 
$('#friend_name').fadeIn(400); 
$('#friend_name').fadeOut(400); 
$('#friend_name').fadeIn(400); 
setTimeout(function() { 
    $('#friend_name').focus(); 
}, 1300); 

我發現,爲了使對焦功能在IE中工作,我需要添加一個延遲,它是長度,然後將合併延遲的fadexx功能。

在Chrome中,我可以省略延遲的$('#friend_name').focus()調用。