很抱歉问这么基本的问题。我正在学习 Javascript 和 jQuery。
我有一个弹出窗口,其中包含 3 个输入字段,分别是 ETD、ETA 和持续时间。我正在尝试计算 ETD 和 ETA 的焦点持续时间,并且将有一个 AjaxCall,我们在其中进行计算和其他操作。 问题是每当我按下 Tab 键(聚焦于 ETD 或 ETA)时,焦点就会从弹出窗口移出并移至主窗口。
我试图在 ajax 调用成功时将焦点强制集中在这些输入字段上。
我正在尝试使用标志来实现这一点,例如,如果焦点发生在 ETD 上,那么 ETDFlag 将为 true,我将在 ajax 调用的 onsuccess
上检查此标志,因此,如果 ETDFlag 为 true,我将放置重点关注预计到达时间等,
但问题是,即使我通过单击字段外来聚焦该字段,焦点也会转到下一个字段,因此仅当按下 Tab 键时我才需要设置标志。
下面是示例代码:
$("#ETD").focusout( function (event) {
var keyCode=event.keyCode || event.which;
if(keyCode == 9){
ETD= true;
ETA= false;
}
calculateDuration();
我没有在内部获取事件对象,因为当我尝试alert(event);
时,输出是[object Object]
。
但是类似:
alert(e.target.id)
将显示字段的 ID。例如预计到达时间
请帮忙告诉我出了什么问题。我是 Javascript 新手,所以无法理解。
进行了更多说明编辑
目标是当用户按下 Tab 按钮时转到下一个输入。正如前面提到的,当前的行为是按下 Tab 键(焦点退出)后,将发生 ajax 调用来计算持续时间字段值,并且焦点将从弹出窗口移至主窗口! 所以拥有事件对象的主要目的是获取Tab按钮的键码:
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()
会将其参数转换为字符串。
jQuery 的 event
对象不会覆盖 toString()
,因此您将获得默认的 [object Object]
。
关于javascript - 如何访问 focusout 事件处理程序中的事件对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25976214/