2010-08-06 64 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')); 

}