如何使用javascript / jquery检测哪个控件启动了模糊事件?

时间:2010-03-12 22:09:39

标签: javascript-events

我有一个radiobuttonlist;当单击item [1]时,将显示一个文本框,并且我的自定义JQuery验证器绑定到文本框onblur事件。这是我的验证器的缩减版本..

function AddMyValidator() {
    $("input[id$='myTxt']").blur(function(e) {
        var val = this.value.replace(" ", "");
        if (val.length == 0) {
            //need to determine firing control here and show error message if not parent radiobuttonlist.item[0]
            this.focus();
            $("span[id$='myError']").html("<span style='color:red;'>Error!</span>").show().animate({ opacity: 1.0 }, 3000).fadeOut("slow");
            return false;
        }
        return true;
    });
}

我希望能够确定模糊事件是否被item [0]触发,并且只显示我的错误消息。任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:0)

检查e.srcElement

答案 1 :(得分:0)

我最终在这里找到了答案

When onblur occurs, how can I find out which element focus went *to*?

这基本上就是我最终的结果......

function AddMyValidator() { 
$("input[id$='myTxt']").blur(function(e) { 
    var val = this.value.replace(" ", ""); 
    if (val.length == 0) { 
        var target = e.explicitOriginalTarget || document.activeElement;
        if (!target.id.endsWith("myRadioButtonList_0")){
            this.focus(); 
            $("span[id$='myError']").html("<span style='color:red;'>Error!</span>").show().animate({ opacity: 1.0 }, 3000).fadeOut("slow"); 
            return false; 
        }
    } 
    return true; 
}); 

}

感谢。

PS。这在IE8中工作正常,但在Firefox 3.6中不行。似乎Firefox不再支持explicitOriginalTarget。我仍然在寻找一种良好的跨浏览器方式。