我有一个带有3个输入文件的弹出窗口说ETD,ETA和持续时间。我正在尝试从ETD和ETA计算焦点的持续时间,并且会有一个AjaxCall,我们在其中进行计算和其他事情。 问题是每当按Tab键(从ETD或ETA聚焦)时,焦点将从弹出窗口移出并移动到主窗口。
我试图在ajax调用成功时强行关注这些输入字段。 我试图使用标志来实现这一点,例如,如果焦点输出发生在ETD上,那么ETDFlag将是真实的,并且在ajax调用的“onsuccess”上检查此标志,因此如果ETDFlag为真,则将焦点放在ETA上,依此类推。 但问题是,即使通过点击退出该领域的重点突出,焦点将转到下一个档案。所以只有在按下TabKey时才需要设置标志。
下面是示例代码:
$("#ETD").focusout( function (event) {
var keyCode=event.keyCode || event.which;
if(keyCode == 9){
ETD= true;
ETA= false;
}
calculateDuration();
当我尝试提醒(事件)时,我没有得到事件对象;输出是[object Object]。
但是类似
警报(e.target.id) //将显示提交的ID。例如。 ETD
请帮忙告诉我有什么问题。我是Javascripts的新手,所以无法理解。
” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “”
目标是在用户pree Tab按钮时转到下一个输入。如上所述,当按下tab(焦点输出)时,会发生ajax调用以计算持续时间字段值,并且焦点将从弹出窗口移出到主窗口!! 所以拥有事件对象的主要目的是获取tab按钮的键码:
var keyCode=event.keyCode || event.which;
If(keyCode==9) //tab key code
{Then make some flag true}
但是按Tab键它就不会进入条件!!!
“” “” “” “” “” “” “” “” “”“
var keyCode=event.keyCode || event.which;
我尝试在keyup事件上使用上面的代码,“ keyCode ”能够捕获几乎所有键期望Tab键 !!!
答案 0 :(得分:2)
您正在获取事件对象。
alert()
会将其参数转换为字符串
jQuery的event
对象不会覆盖toString()
,因此您将获得[object Object]
的默认值。
答案 1 :(得分:2)
我认为你需要keyup或keydown而不是专注于你做你的过程。
$(document).ready(function(){
$("#ETD").bind('keydown', function (event) {
if(event.keyCode == 9){
alert('its a tab');
// you do your process here
}
});
});
<强> SEE DEMO 强>
Focusout不是键盘事件,因此您无法从中获取任何键码。 详细了解 keyboard events here