2014-09-22 3 views
0

жаль задавать такой элементарный вопрос. Я изучаю Javascripts и JQuery.Как получить доступ к объекту события в фокусе Обработчик событий

У меня есть всплывающее окно с 3 входными полями, указывающими ETD, ETA и продолжительность. Я пытаюсь рассчитать продолжительность фокусировки от ETD и ETA, и будет AjaxCall, в котором мы делаем расчет и другие вещи. Проблема заключается в том, что всякий раз, когда вы нажимаете клавишу Tab (фокусируясь на ETD или ETA), фокус будет выведен из всплывающего окна и переместится в главное окно.

Я пытаюсь установить фокусировку на этих входных полях при успешном вызове ajax. Я пытаюсь достичь этого с помощью флагов, например, если фокус произошел на ETD, тогда ETDFlag будет правдой и не будет проверять этот флаг на «onsuccess» ajax-вызова, поэтому, если 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) // покажет идентификатор поданной. например. ETD

, пожалуйста, помогите и скажите мне, что не так. Я новичок в Javascripts, так что не могу понять.

« "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Edited для уточнения

Цель состоит в том, чтобы перейти к следующему вводу, когда пользователь установил кнопку Tab. Как уже упоминалось, поведение currenrt после нажатия вкладки (фокус) вызовет ajax, чтобы вычислить значение поля продолжительности, и фокус выйдет из всплывающего окна в главное окно! Таким образом, главная perpose того объекта события, чтобы получить код ключа кнопки вкладки:

var keyCode=event.keyCode || event.which; 
If(keyCode==9) //tab key code 
{Then make some flag true} 

Но нажатие клавиши табуляции никогда не приходит внутри, если состояние !!!

"" "" "" "" "" "" "" "" ""»

Edited для более разъяснений 2

var keyCode=event.keyCode || event.which; 

Я пытался использовать выше код на событие KeyUp и «KEYCODE» способен захватить почти все ключи ожидают ключи Tab !!!

+0

У вас его уже есть. вы можете сказать 'alert (event.target.id)' – andrex

+0

Что вы ожидаете? – SLaks

+0

@SLakes добавить примечание для разъяснения –

ответ

2

Вы получаете объект события.

alert() преобразует свой аргумент в строку.
Объект jQuery's event не переопределяет toString(), поэтому вы получаете значение по умолчанию [object Object].

2

Я думаю, что вам нужна клавиатура или 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

+0

хорошо, я знаю, что он работает для keyup и keydown evets, но почему бы не сосредоточиться !!? –