我有一个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]触发,并且只显示我的错误消息。任何建议都将不胜感激。
答案 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。我仍然在寻找一种良好的跨浏览器方式。