Javascript 如何在focusout事件处理程序中访问事件对象
很抱歉问这么简单的问题。我正在学习Javascripts和Jquery 我有一个带有3个输入文件的弹出窗口,如ETD、ETA和持续时间。我试图从ETD和ETA计算focusout的持续时间,将会有一个AjaxCall,我们在其中进行计算和其他工作。 问题是每当按下Tab键(调焦离开ETD或ETA)时,调焦将从弹出窗口移到主窗口 我试图将重点放在这些输入字段上,以确保ajax调用的成功。 我试图使用标志来实现这一点,例如,如果focusout发生在ETD上,那么ETDFlag将为true,我将在ajax调用的“onsuccess”上检查此标志,因此如果ETDFlag为true,我将把焦点放在ETA上,等等。 但问题是,即使通过单击“不在文件中”,不在文件中聚焦,焦点也会转到下一个文件。因此,只需在按下TabKey时设置标志 下面是示例代码:Javascript 如何在focusout事件处理程序中访问事件对象,javascript,jquery,ajax,javascript-events,jquery-focusout,Javascript,Jquery,Ajax,Javascript Events,Jquery Focusout,很抱歉问这么简单的问题。我正在学习Javascripts和Jquery 我有一个带有3个输入文件的弹出窗口,如ETD、ETA和持续时间。我试图从ETD和ETA计算focusout的持续时间,将会有一个AjaxCall,我们在其中进行计算和其他工作。 问题是每当按下Tab键(调焦离开ETD或ETA)时,调焦将从弹出窗口移到主窗口 我试图将重点放在这些输入字段上,以确保ajax调用的成功。 我试图使用标志来实现这一点,例如,如果focusout发生在ETD上,那么ETDFlag将为true,我将在a
$("#ETD").focusout( function (event) {
var keyCode=event.keyCode || event.which;
if(keyCode == 9){
ETD= true;
ETA= false;
}
calculateDuration();
我没有像尝试警报(事件)时那样将事件对象放入内部;输出为[object]
但有点像
警报(如target.id)
//将显示文件的id。ETD
请帮帮我,告诉我怎么了。我是Java脚本新手,所以无法理解
详细信息
编辑以获得更多澄清
目标是在用户按下选项卡按钮时转到下一个输入。如前所述,currenrt行为是在按下tab键(focusout)后,会发生一个ajax调用来计算持续时间字段值,焦点将从弹出窗口移到主窗口!!
因此,拥有event object的主要目的是获取tab按钮的关键代码:
var keyCode=event.keyCode || event.which;
If(keyCode==9) //tab key code
{Then make some flag true}
但在按下tab键的情况下,它永远不会进入内部
“您的名字是什么?”
编辑以获得更多澄清2
我尝试在keyup事件中使用上述代码,并且“keyCode”能够捕获几乎所有的键除了制表键之外!!!您正在获取事件对象
alert()
将其参数转换为字符串。jQuery的
事件
对象没有覆盖toString()
,因此您将获得默认的[object object]
您将获得事件对象
alert()
将其参数转换为字符串。jQuery的
事件
对象不会覆盖toString()
,因此您会得到[object object]
的默认值,我认为您需要使用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不是键盘事件,因此您无法从中获取任何键码。
阅读更多关于的信息,我认为您需要使用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不是键盘事件,因此您无法从中获取任何键码。
阅读更多关于您已经获得了它。您可以说
警报(event.target.id)
您预计会发生什么?@SLakes为clarification@andrex:添加注释以进行更多说明,拥有事件对象的目标是使选项卡出现问题solved@SohailAnwer你的问题是关于访问事件对象的。我的朋友,你已经在访问它了。如果你已经准备好了,就把它放在你体内调用ajax那么到底出了什么问题?你已经知道了。你可以说alert(event.target.id)
您预计会发生什么?@SLakes为clarification@andrex:添加注释以进行更多说明,拥有事件对象的目标是使选项卡出现问题solved@SohailAnwer你的问题是关于访问事件对象的。我的朋友,你已经在访问它了。如果你已经准备好了,就把它放在你体内调用ajax所有的事情都是这样,那又有什么错呢?好吧,我知道它适用于keypup和keypdown evets,但为什么不适用于focusout!!?好吧,我知道它适用于keypup和keypdown evets,但为什么不适用于focusout!!?