2014-09-22 102 views
0

对不起,提出这样的基本问题。我正在学习JavaScript和Jquery。如何访问聚焦事件中的事件对象事件处理程序

我有3周输入的Fileds一个弹出说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

请帮助,告诉我什么是错。我是Javascript新手,所以无法理解。

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

编辑更多的澄清

的目标是进入下一个输入时用户打包机标签按钮。正如前面提到的currenrt行为是在按Tab(焦点输出)之后,ajax调用将会发生以计算持续时间字段值,焦点将移出弹出窗口到主窗口! 因此,有事件对象的主要perpose是让标签按钮的键码:

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事件使用上面的代码和“键代码”能够捕捉几乎所有的按键预期tab键

+0

你已经明白了。你可以说'alert(event.target.id)' – andrex 2014-09-22 14:14:01

+0

你预计会发生什么? – SLaks 2014-09-22 14:14:27

+0

@SLakes添加注释澄清 – 2014-09-22 21:18:03

回答

2

你所得到的事件对象。

alert()会将其参数转换为字符串。
jQuery的event对象不会覆盖toString(),所以你得到的[object Object]默认。

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

事件的内容是不是键盘事件所以你不能从中得到任何的键码。 查看更多about keyboard events here

+0

好吧,我知道它是为keyup和keydown evets工作,但为什么不专注!!? – 2014-09-23 07:08:45

相关问题