проблема с событием onBlur в IE - PullRequest
0 голосов
/ 06 августа 2010

У меня есть этот 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 ]

2 голосов
/ 06 августа 2010

event.srcElement - это эквивалент Internet Explorer event.target . jQuery нормализует это для вас в обработчиках событий, применяемых с использованием .bind () , поэтому вы можете использовать event.target в Internet Explorer, но обработчики событий, примененные через атрибуты HTML или свойства DOM, выиграли не имеет собственности. В вашем случае вы можете изменить код на

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

или следуйте июньской рекомендации R и вместо этого передайте ссылку на элемент.

Как примечание: для большинства событий нет необходимости return true;, но особенно для onblur и onfocus , так как вы все равно не можете отменить их действие по умолчанию. .

1 голос
/ 06 августа 2010

Чтобы проверить цель, не передавайте событие intead этого проходного объекта как

посмотрите этот код

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

 function  onBlurFun(obj) 
{
   alert(obj.id); 
}
0 голосов
/ 06 августа 2010

IE имеет свой собственный глобальный объект события.

Это должно работать

onBlurFun = function(event) {

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

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

}
...