javascript - 如何访问 focusout 事件处理程序中的事件对象

标签 javascript jquery ajax jquery-events jquery-focusout

很抱歉问这么基本的问题。我正在学习 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/

相关文章:

javascript - 将所有 child 包裹起来

javascript - 如何使用 Open Weather API 上的 fetch api 方法

javascript - 根据名称对表数据进行排序并使用 javascript ajax 显示

javascript - 如何将 Rails 变量传递给 AngularJS 配置

JavaScript 本地文件夹访问

javascript - 使用 jQuery 在 DIV 对象中附加 HTML 和 JSTL 代码的问题

javascript - 如何使一条线平滑而另一条线不在图表上?

javascript - 如果不在标签中, polymer 属性将不起作用

javascript - 单个 WordPress 页面上的单个 JavaScript 函数

javascript - 加载页面 Ajax,然后将其滑入页面或插件