2010-03-12 19 views
0

我有一个单选按钮列表;当单击项目[1]时会显示一个文本框,并且我的自定义JQuery验证程序绑定到文本框的onblur事件。这里是我的验证的削减版本..如何检测哪个控件使用javascript/jquery启动模糊事件?

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; 
    }); 
} 

我希望能够确定模糊事件是由项目[0]解雇,而当它不仅显示我的错误消息。任何建议将不胜感激。

回答

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。我仍然在寻找一个很好的跨浏览器的方式来做到这一点。

0

检查e.srcElement

+0

感谢您的帮助。我试过了,没有成功。我已经有了$(this)的句柄 - 我正在模糊的控制。我需要的是一个处理射击控制或控制,当我返回true时会获得焦点。 – tbilly