快速提问 - 是否可以通过鼠标点击或焦点事件中的标签来检测焦点是否来自?
我想如果没有,我将不得不在同一元素上使用点击手柄来确定来源,但我更喜欢焦点事件的一种方式。
由于
Gausie
答案 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');
});