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

时间:2014-09-22 14:12:08

标签: javascript jquery ajax javascript-events jquery-focusout

抱歉问这样的基本问题。我正在学习Javascripts和Jquery。

我有一个带有3个输入文件的弹出窗口说ETD,ETA和持续时间。我正在尝试从ETD和ETA计算焦点的持续时间,并且会有一个AjaxCall,我们在其中进行计算和其他事情。 问题是每当按Tab键(从ETD或ETA聚焦)时,焦点将从弹出窗口移出并移动到主窗口。

我试图在ajax调用成功时强行关注这些输入字段。 我试图使用标志来实现这一点,例如,如果焦点输出发生在ETD上,那么ETDFlag将是真实的,并且在ajax调用的“onsuccess”上检查此标志,因此如果ETDFlag为真,则将焦点放在ETA上,依此类推。 但问题是,即使通过点击退出该领域的重点突出,焦点将转到下一个档案。所以只有在按下TabKey时才需要设置标志。

下面是示例代码:

$("#ETD").focusout( function (event) {  
    var keyCode=event.keyCode || event.which;
    if(keyCode == 9){
        ETD= true;
        ETA= false;
    }       
    calculateDuration();

当我尝试提醒(事件)时,我没有得到事件对象;输出是[object Object]。

但是类似

  

警报(e.target.id)    //将显示提交的ID。例如。 ETD

请帮忙告诉我有什么问题。我是Javascripts的新手,所以无法理解。

” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “”

编辑以获得更多说明

目标是在用户pree Tab按钮时转到下一个输入。如上所述,当按下tab(焦点输出)时,会发生ajax调用以计算持续时间字段值,并且焦点将从弹出窗口移出到主窗口!! 所以拥有事件对象的主要目的是获取tab按钮的键码:

 var keyCode=event.keyCode || event.which;
 If(keyCode==9)   //tab key code
 {Then make some flag true}

但是按Tab键它就不会进入条件!!!

“” “” “” “” “” “” “” “” “”“

编辑了更多澄清2

var keyCode=event.keyCode || event.which;

我尝试在keyup事件上使用上面的代码,“ keyCode ”能够捕获几乎所有键期望Tab键 !!!

2 个答案:

答案 0 :(得分:2)

您正在获取事件对象。

alert()会将其参数转换为字符串 jQuery的event对象不会覆盖toString(),因此您将获得[object Object]的默认值。

答案 1 :(得分:2)

我认为你需要keyup或keydown而不是专注于你做你的过程。

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

<强> SEE DEMO

Focusout不是键盘事件,因此您无法从中获取任何键码。 详细了解 keyboard events here