2

此問題僅發生在IE8(不是IE8兼容模式)上。 我有一個名爲sample.htm文件:彈出後禁用所有文本框

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html><head> 
    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/> 
    <script src='http://jqueryjs.googlecode.com/files/jquery-1.3.2.js' type='text/javascript'></script> 
</head> 
<body style='position:relative;z-index:1'> 
<input><a href="javascript:Popup('test1.html');">Click</a> 
<script> 
function Popup(url) { 
    overlay = $("<div style='position:fixed; width:100%; height:100%; z-index:10005'><div style='position:absolute; width:100%; height:100%; background:black; -ms-filter:\"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)\"; filter: alpha(opacity=50);'></div>"); 
    iframe = $("<iframe name='Overlay' style='position:absolute; height:80%; width:80%; top:10%; left:10%;' src='" + url + "'></iframe>"); 
    closebut = $("<img style='position:absolute; cursor:pointer; right:10%; top:10%;' width='24px' height='24px' src='/images/close.png' onclick='RemovePopup()' >"); 
    overlay.append(iframe).append(closebut); 
    $('body').prepend(overlay); 
} 
function RemovePopup() { 
    overlay.animate({top:'100%'},800,'swing', function() { $(this).remove(); }); 
} 
</script> 
</div></body></html> 

這裏是test1.html的完整內容:<html><head></head><body><input></body></html>

因此,創建這2個文件,在IE8打開sample.htm,點擊鏈接打開在彈出窗口中,在文本框中鍵入內容,關閉彈出窗口,嘗試在第一個文本框中鍵入內容。如果可以,重複2或3次。 最終,第一個文本框被禁用。

任何人都可以提出一種解決方法嗎?

感謝所有幫助

+0

如果人們不想創建這兩個文件,請直到我,我會嘗試把它們放到網上的某個地方。 – wezten

+0

重現它沒有問題。可能與不透明度過濾器有關,但我仍在觀察它。 – andyb

+0

看起來在關閉時點擊'iframe'(點擊關閉按鈕後)會導致這種情況發生。 – Korikulum

回答

2

基本上我認爲這是一個focus問題。如果您可以將瀏覽器置於<input>似乎被禁用的情況下,那麼您實際上可以將標籤更改爲<input>,並按預期輸入值。

我認爲$(this).remove();調用在動畫結束時刪除iframe會導致iframe中的元素具有焦點時出現問題。我建議在刪除iframe之前給出第一個<input>焦點。

例如,如果它是第一個輸入,則使用$('input:first').focus();。它似乎在我的測試中工作。

+1

非常感謝。我用jQuery('input:text:visible:first')。focus()來覆蓋所有情況。 – wezten

+0

這是一個非常惱人的錯誤,因爲它似乎隻影響某些版本的IE8或某些機器。 – rossisdead