0

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

我有一个弹出窗口,其中包含 3 个输入文件,例如 ETD、ETA 和持续时间。我正在尝试从 ETD 和 ETA 计算 focusout 的持续时间,并且将有一个 AjaxCall,我们在其中进行计算和其他工作。问题是每当按下 Tab 键(从 ETD 或 ETA 聚焦)时,焦点都会移出弹出窗口并移至主窗口。

我试图将焦点集中在这些输入字段上,以确保 ajax 调用成功。我正在尝试使用标志来实现这一点,例如,如果在 ETD 上发生了焦点,那么 ETDFlag 将为真,并且在 ajax 调用的“onsuccess”上检查此标志,所以如果 ETDFlag 为真,则将重点放在 ETA 上等等。但问题是,即使通过点击 out of fields 将焦点移出该字段,焦点也会转到下一个字段。所以只需要在 TabKey 按下时设置标志。

下面是示例代码:

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

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

但类似的东西

alert(e.target.id) // 将显示字段的 id。例如。东部时间

请帮助并告诉我出了什么问题。我是 Javascripts 新手,所以无法理解。

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

编辑以获得更多说明

目标是在用户使用 Tab 按钮时转到下一个输入。如前所述,当前行为是在按下选项卡(焦点输出)后,将发生一个 ajax 调用来计算持续时间字段值,并且焦点将移出弹出窗口到主窗口!所以拥有事件对象的主要目的是获取tab按钮的keycode:

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

但是在按下制表键时它永远不会进入 if 条件!!!

"""""""""""""""""""

编辑以获取更多说明 2

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

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

4

2 回答 2

2

您正在获取事件对象。

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

于 2014-09-22T14:14:19.353 回答
2

我认为你需要 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 不是键盘事件,因此您无法从中获取任何键码。在此处阅读有关键盘事件的更多信息

于 2014-09-23T06:13:17.593 回答