jQuery передает фокус и щелчок по элементу

Я пытаюсь определить рабочий процесс для точной настройки веб-приложения для ввода данных. Изобразите несколько адресных форм на одной веб-странице:

  1. Name___________
     Street_________
     Phone__________

  2. Name___________
     Street_________
     Phone__________

  [...many more...]

Теперь я хотел бы знать, использует ли пользователь клавишу табуляции для перехода ко второму полю «Имя» (или где-нибудь в этой записи), или они используя мышь, чтобы щелкнуть по нему. (Или Shift-Tab для перемещения в обратном направлении.)

Я установил обработчик как для фокуса, так и для полей ввода:

$('input').click(function() { TabulateClick(this) });
$('input').focus(function() { TabulateFocus(this) });

И в обработчике я определяю, с каким адресом работает пользователь и должны ли мы ' ве "переключили" адресные записи. (Если фокус был сделан на «Телефон» для первого адреса, и вы щелкнули по полю «Имя» в том же адресе , это на самом деле не переключает записи, поэтому я не табулирую это.)

    function TabulateClick(field)
    {
         var currentAddressRecord = FindAddress(field);
         if ( lastAddressRecord != currentAddressRecord )
             switchedAddressesWithClick++;
         lastAddressRecord = currentAddress;
    }
    function TabulateFocus(field)
    {
         var currentAddress = FindAddress(field);
         if ( lastAddressRecord != currentAddressRecord )
             switchedAddressesWithTab++;
         lastAddressRecord = currentAddress;
    }

Моя проблема в том, что, когда я щелкаю мышью в поле, сначала срабатывает событие focus , в котором отображается ложное значение SwitchAddressesWithTab и изменяется currentAddress (это плохо ). При запуске обработчика щелчка запись lastAddressRecord портится.

Есть ли способ внутри обработчика focus узнать о наличии ожидающего события click для того же объекта? Или в обработчике щелкните , чтобы узнать, что ранее он был обработан только focus ?

12
задан Clinton Pierce 3 February 2011 в 17:18
поделиться