【发布时间】:2014-09-22 14:12:07
【问题描述】:
很抱歉问了这么简单的问题。我正在学习 Javascript 和 jQuery。
我有一个弹出窗口,其中包含 3 个输入字段,即 ETD、ETA 和持续时间。我正在尝试从 ETD 和 ETA 计算 focusout 的持续时间,并且会有一个 AjaxCall,我们在其中进行计算和其他工作。 问题是每当我按下 Tab 键(聚焦在 ETD 或 ETA 之外)时,焦点都会移出弹出窗口并移至主窗口。
我正在尝试将焦点集中在这些输入字段上,以确保 ajax 调用成功。
我正在尝试使用标志来实现这一点,例如,如果在 ETD 上发生了焦点,那么 ETDFlag 将为真,我将在 ajax 调用的onsuccess 上检查这个标志,所以如果 ETDFlag 为真,我将专注于 ETA 等等在,
但问题是即使我通过单击字段外的焦点离开字段,焦点也会转到下一个字段,所以我只需要在按下 Tab 键时设置标志。
下面是示例代码:
$("#ETD").focusout( function (event) {
var keyCode=event.keyCode || event.which;
if(keyCode == 9){
ETD= true;
ETA= false;
}
calculateDuration();
当我尝试alert(event); 时,我没有得到事件对象,输出是[object Object]。
但是类似:
警报(e.target.id)
将显示字段的 id。例如预计到达时间
请帮助并告诉我出了什么问题。我是 Javascript 新手,所以无法理解。
为进一步澄清而编辑
目标是在用户按下 Tab 按钮时转到下一个输入。如前所述,当前行为是在按下 tab (focusout) 后,将发生一个 ajax 调用来计算持续时间字段值,并且焦点将从弹出窗口移到主窗口! 所以拥有事件对象的主要目的是获取Tab按钮的keycode:
var keyCode=event.keyCode || event.which;
If(keyCode==9) //tab key code
{Then make some flag true}
但是在按下 Tab 键时它永远不会进入 if 条件!
为进一步澄清而编辑 2
var keyCode=event.keyCode || event.which;
我尝试在 keyup 事件中使用上述代码,“keyCode”能够捕获几乎所有的键除了 Tab 键!
【问题讨论】:
-
你已经知道了。你可以说
alert(event.target.id) -
您希望发生什么?
-
@SLakes 添加注释以进行澄清
-
@andrex : 添加注释以便更清楚地说明,拥有事件对象的目标是解决选项卡问题
-
@SohailAnwer 您的问题是关于访问事件对象的。你已经在访问它了,我的朋友。如果条件你已经得到了所有东西,那么调用 ajax 把它放在你里面,那么有什么问题呢?
标签: javascript jquery ajax jquery-events jquery-focusout