Javascript 如何在focusout事件处理程序中访问事件对象

Javascript 如何在focusout事件处理程序中访问事件对象,javascript,jquery,ajax,javascript-events,jquery-focusout,Javascript,Jquery,Ajax,Javascript Events,Jquery Focusout,很抱歉问这么简单的问题。我正在学习Javascripts和Jquery 我有一个带有3个输入文件的弹出窗口,如ETD、ETA和持续时间。我试图从ETD和ETA计算focusout的持续时间,将会有一个AjaxCall,我们在其中进行计算和其他工作。 问题是每当按下Tab键(调焦离开ETD或ETA)时,调焦将从弹出窗口移到主窗口 我试图将重点放在这些输入字段上,以确保ajax调用的成功。 我试图使用标志来实现这一点,例如,如果focusout发生在ETD上,那么ETDFlag将为true,我将在a

很抱歉问这么简单的问题。我正在学习Javascripts和Jquery

我有一个带有3个输入文件的弹出窗口,如ETD、ETA和持续时间。我试图从ETD和ETA计算focusout的持续时间,将会有一个AjaxCall,我们在其中进行计算和其他工作。 问题是每当按下Tab键(调焦离开ETD或ETA)时,调焦将从弹出窗口移到主窗口

我试图将重点放在这些输入字段上,以确保ajax调用的成功。 我试图使用标志来实现这一点,例如,如果focusout发生在ETD上,那么ETDFlag将为true,我将在ajax调用的“onsuccess”上检查此标志,因此如果ETDFlag为true,我将把焦点放在ETA上,等等。 但问题是,即使通过单击“不在文件中”,不在文件中聚焦,焦点也会转到下一个文件。因此,只需在按下TabKey时设置标志

下面是示例代码:

$("#ETD").focusout( function (event) {  
    var keyCode=event.keyCode || event.which;
    if(keyCode == 9){
        ETD= true;
        ETA= false;
    }       
    calculateDuration();
我没有像尝试警报(事件)时那样将事件对象放入内部;输出为[object]

但有点像

警报(如target.id) //将显示文件的id。ETD

请帮帮我,告诉我怎么了。我是Java脚本新手,所以无法理解

详细信息

编辑以获得更多澄清 目标是在用户按下选项卡按钮时转到下一个输入。如前所述,currenrt行为是在按下tab键(focusout)后,会发生一个ajax调用来计算持续时间字段值,焦点将从弹出窗口移到主窗口!! 因此,拥有event object的主要目的是获取tab按钮的关键代码:

 var keyCode=event.keyCode || event.which;
 If(keyCode==9)   //tab key code
 {Then make some flag true}
但在按下tab键的情况下,它永远不会进入内部

“您的名字是什么?”

编辑以获得更多澄清2
我尝试在keyup事件中使用上述代码,并且“keyCode”能够捕获几乎所有的键除了制表键之外!!!

您正在获取事件对象

alert()
将其参数转换为字符串。

jQuery的
事件
对象没有覆盖
toString()
,因此您将获得默认的
[object object]
您将获得事件对象

alert()
将其参数转换为字符串。

jQuery的
事件
对象不会覆盖
toString()
,因此您会得到
[object object]

的默认值,我认为您需要使用keyup或keydown,而不是focusout,然后再执行流程

$(document).ready(function(){ 
   $("#ETD").bind('keydown', function (event) {  
      if(event.keyCode == 9){
          alert('its a tab');
          // you do your process here
      }       
   });
});

Focusout不是键盘事件,因此您无法从中获取任何键码。
阅读更多关于

的信息,我认为您需要使用keyup或keydown键,而不是focusout键,然后再执行您的过程

$(document).ready(function(){ 
   $("#ETD").bind('keydown', function (event) {  
      if(event.keyCode == 9){
          alert('its a tab');
          // you do your process here
      }       
   });
});

Focusout不是键盘事件,因此您无法从中获取任何键码。
阅读更多关于

您已经获得了它。您可以说
警报(event.target.id)
您预计会发生什么?@SLakes为clarification@andrex:添加注释以进行更多说明,拥有事件对象的目标是使选项卡出现问题solved@SohailAnwer你的问题是关于访问事件对象的。我的朋友,你已经在访问它了。如果你已经准备好了,就把它放在你体内调用ajax那么到底出了什么问题?你已经知道了。你可以说
alert(event.target.id)
您预计会发生什么?@SLakes为clarification@andrex:添加注释以进行更多说明,拥有事件对象的目标是使选项卡出现问题solved@SohailAnwer你的问题是关于访问事件对象的。我的朋友,你已经在访问它了。如果你已经准备好了,就把它放在你体内调用ajax所有的事情都是这样,那又有什么错呢?好吧,我知道它适用于keypup和keypdown evets,但为什么不适用于focusout!!?好吧,我知道它适用于keypup和keypdown evets,但为什么不适用于focusout!!?