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

7ivaypg9  于 2023-01-04  发布在  jQuery
关注(0)|答案(2)|浏览(114)

我有单选按钮列表;当单击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;
    });
}

我希望能够确定blur事件是否由项[0]激发,并且仅在不是时显示错误消息。如有任何建议,我们将不胜感激。

wydwbb8l

wydwbb8l2#

我最终在这里找到了答案
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; 
});

}
谢谢。
这在IE8中可以正常工作,但在Firefox 3.6中不行。Firefox似乎不再支持explicitOriginalTarget。我仍然在寻找一种好的跨浏览器方式来做到这一点。

相关问题