IE中onBlur事件的问题

时间:2010-08-06 10:06:26

标签: javascript javascript-events onblur

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

3 个答案:

答案 0 :(得分: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 :(得分:1)

要检查目标不传递事件而不是传递对象本身,如

查看此代码

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

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

答案 2 :(得分:0)

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

这应该有效

onBlurFun = function(event) {

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

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

}