0

我有这个 HTML:

<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没有正确设置。我应该怎么做才能访问调用节点?

4

3 回答 3

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 的建议并传递对元素的引用。

作为旁注,return true;大多数事件都不需要,但尤其是onbluronfocus因为无论如何您都无法取消它们的默认操作。

于 2010-08-06T10:16:44.000 回答
1

要检查目标,请不要传递事件而不是它自己喜欢的传递对象

看这段代码

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

 function  onBlurFun(obj) 
{
   alert(obj.id); 
}
于 2010-08-06T10:10:38.103 回答
0

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

这应该工作

onBlurFun = function(event) {

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

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

}
于 2010-08-06T11:13:06.437 回答