Событие Onblur по ошибке срабатывает в IE при нажатии на части всплывающего документа - PullRequest
3 голосов
/ 25 августа 2010

У меня есть несколько маленьких всплывающих страниц, которые предназначены для самостоятельного закрытия, когда они теряют фокус - т.е. пользователь нажимает на родительский документ.

К сожалению, в IE8 размытие также происходит, когда пользователь начинает заполнять форму ввода внутри всплывающей страницы.Действительно, нажатие в любом месте внутри формы вызывает это, или даже когда пользователь случайно щелкает некоторый текст.Кажется, что эти элементы не являются частью всплывающего документа.

Как я могу сделать их так?

Вот мой код размытия (внутри скрипта .js), который я использую в нескольких всплывающих окнах:

var fClose=0 

onload=function() {   
 fClose=0  
 setTimeout("doClose()",111);  
 document.onblur=Blur_Me;  
 document.onfocusout = Blur_Me;  
}  

function Blur_Me(){  
 fClose=1;  
 setTimeout("doClose()",111);  
}    
function doClose(){  
 if(fClose)close();  
}

1 Ответ

2 голосов
/ 25 декабря 2012

Вместо использования blur() вы можете использовать обработчики jQuery focusin() и focusout().

Событие focusin отправляется элементу, когда он или любой элемент внутри него получает фокус.

Событие focusout отправляется элементу, когда он или любой элемент внутри него теряет фокус.

Они отличаются от blur () тем, что он поддерживает обнаружение потери фокуса от родительских элементов (другими словами, он поддерживает всплытие событий).

...