2010-08-06 55 views
0

事件我有这样的HTML:问题的onblur在IE

<textarea class="question" onBlur="onBlurFun(event); return true;" 
name="aaa" id="bbb"></textarea> 

而且在JavaScript

onBlurFun = function(event) { 
var tgt = $(event.target); 
alert(tgt.attr('id')); 
    } 

在IE浏览器这个功能,tgt设置不正确。我应该怎么做才能访问调用节点?

回答

2

event.srcElement是Internet Explorer的等效event.target的。 jQuery在使用.bind()应用的事件处理程序中为您规范化此事件,因此您可以在Internet Explorer中使用event.target,但通过HTML属性或DOM属性应用的事件处理程序不具有该属性。在你的情况,你可以更改代码以

// event.target or event.srcElement 
var tgt = $(event.target || event.srcElement); 

或按照June R's advice并传递,而不是元素的引用。

作为一个侧面说明,没有必要return true;对于大多数事件,但特别是对于的onblur的onfocus因为你不能无论如何取消它们的默认操作。

1

要检查目标并不这一翻译通过这关对象的事件它的自我喜欢

看看这个代码

<textarea class="question" onBlur="onBlurFun(this); return true;" 
name="aaa" id="bbb"></textarea> 

function onBlurFun(obj) 
{ 
    alert(obj.id); 
} 
0

IE有它自己的全局事件对象。

这应该工作

onBlurFun = function(event) { 

    if (!event) 
    { 
    event = window.event; 
    event.target = event.srcElement; 
    } 

    var tgt = $(event.target); 
    alert(tgt.attr('id')); 

}