我可以检测到焦点的来源吗? (Javascript,jQuery)

时间:2009-12-11 14:35:41

标签: javascript jquery

快速提问 - 是否可以通过鼠标点击或焦点事件中的标签来检测焦点是否来自?

我想如果没有,我将不得不在同一元素上使用点击手柄来确定来源,但我更喜欢焦点事件的一种方式。

由于

Gausie

5 个答案:

答案 0 :(得分:4)

可能无法正常工作,但如果没有直接的方式,那么你不能只使用Mouseover并检测它吗?此人将鼠标悬停在控件上以选择它(?)

答案 1 :(得分:0)

我非常有信心焦点事件不会影响焦点的排序方式(window.focus,key,click ...)。

但是在点击的情况下,您可以检测到鼠标单击。您还可以检测键盘事件(更多关于http://www.quirksmode.org/js/keys.html)。

答案 2 :(得分:0)

使用鼠标位置怎么样?

在事件处理程序中,将当前鼠标位置与控件区域进行比较。如果坐标落在控件区域内,则不滚动。

当然,这不是一个完美的解决方案,因为它们可以悬停元素,然后选项卡而不点击。但既然你试图减少任何迷失方向,这实际上可能是一个很好的副作用。

使用鼠标位置时,我喜欢使用quirksmode.org中的脚本。我认为Jquery也可以为它提供一些功能。

答案 3 :(得分:0)

尝试获取keyCode - 这是一篇文章的链接,详细介绍了如何使用。底部的评论也可能有用。

http://www.geekpedia.com/tutorial138_Get-key-press-event-using-JavaScript.html

这是文章中的代码。它没有显示它,但tab的keyCode是9。

<script type="text/javascript">

document.onkeyup = KeyCheck;       

function KeyCheck(e)

{

   var KeyID = (window.event) ? event.keyCode : e.keyCode;


   switch(KeyID)

   {

      case 16:

      document.Form1.KeyName.value = "Shift";

      break; 

      case 17:

      document.Form1.KeyName.value = "Ctrl";

      break;

      case 18:

      document.Form1.KeyName.value = "Alt";

      break;

      case 19:

      document.Form1.KeyName.value = "Pause";

      break;

      case 37:

      document.Form1.KeyName.value = "Arrow Left";

      break;

      case 38:

      document.Form1.KeyName.value = "Arrow Up";

      break;

      case 39:

      document.Form1.KeyName.value = "Arrow Right";

      break;

      case 40:

      document.Form1.KeyName.value = "Arrow Down";

      break;
   }

}
</script>

答案 4 :(得分:0)

如果有人感兴趣,我就是这样做的:

$('input').focus(function(){
    $this = $(this);
    $this.parents('tr').css('background-color','yellow');   
    if($this.attr('click')!='true'){
        $('body').scrollTop($this.offset().top-($(window).height()/2));
    }
}).blur(function(){
    $(this).parents('tr').css('background-color','transparent');
}).mouseover(function(){
    $(this).attr('click','true');
}).mouseout(function(){
    $(this).removeAttr('click');
});