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 に答える