2010-08-25 54 views
2

我有一堆小型弹出式页面,它们在失去焦点时会自动关闭 - 即用户单击父文档。点击部分弹出文档时,Onblur事件错误地在IE中触发

不幸的是,在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(); 
} 
+0

你有使用'.onblur'和'.onfocusout'文件事件的原因吗?你有没有尝试过只使用其中一种? – 2010-08-25 20:17:25

+0

是的,我在某个地方看过IE“偏好”onfocusout。一个MS“的标准?本来它只是onblur 但我会再试一次没有onfocusout ... – aqk 2010-08-25 20:53:31

+0

我试过它没有onfocusout,现在它不会关闭所有在IE中。但它工作正常FF(还没试过Chrome或Safari) – aqk 2010-08-25 21:00:13

回答

2

而不是使用blur()你可以使用jQuery的focusin()focusout()处理程序。

focusin事件或其内部的任何元素获得焦点时,会将该事件发送到元素。

focusout事件或其内部的任何元素失去焦点时,会将该事件发送到元素。

这些与blur()不同,它支持检测父元素的焦点丢失(换句话说,它支持事件冒泡)。