Я пытаюсь определить рабочий процесс для точной настройки веб-приложения для ввода данных. Создайте несколько форм адресов на одной веб-странице:
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
запускает первую таблицу с ложным switchedAddressesWithTab
и меняет currentAddress (Плохо). Когда выполняется обработчик click
, lastAddressRecord
испорчен.
Есть ли способ внутри обработчика focus
знать, что на этом же объекте есть ожидающее событие click
? Или в обработчике click
, чтобы знать, что он был ранее просто обработан focus
?