Estoy tratando de determinar el flujo de trabajo para ajustar una aplicación web de entrada de datos. Imaginar varias formas de direcciones en una sola página web:jQuery entrega de enfoque y haga clic en un elemento
1. Name___________
Street_________
Phone__________
2. Name___________
Street_________
Phone__________
[...many more...]
Ahora me gustaría saber si el usuario está utilizando la tecla de tabulación para llegar al segundo campo "Nombre" (o en cualquier lugar dentro de ese registro), o si están usando el mouse para hacer clic en él. (O Shift-Tab para moverse a la inversa.)
He configurado un manejador en el enfoque y haga clic en los campos de entrada:
$('input').click(function() { TabulateClick(this) });
$('input').focus(function() { TabulateFocus(this) });
Y en el controlador, que determina la dirección que el usuario es trabajando y si hemos "cambiado" los registros de direcciones. (Si la atención se centró en "Teléfono" para la primera dirección y hace clic en el campo "Nombre" en el misma dirección, eso no es realmente cambiar los registros, así que no tabule eso.)
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;
}
Mi problema es que cuando hago clic con el mouse en el campo, el evento focus
se activa tabulando primero un switchedAddressesWithTab
falso y cambiando la dirección actual (mala). Cuando se ejecuta el controlador click
, el lastAddressRecord
está dañado.
¿Hay alguna manera dentro del controlador focus
para saber que hay un evento click
pendiente en el mismo objeto? ¿O en el controlador click
para saber que anteriormente solo lo manejaba focus
?
@Juan - ya que estamos en control de calidad hoy, cuando recorre todos los campos del cuerpo, haga clic en uno de los registros de la consola haga clic en, pestaña –
@Josiah: Buena captura, no entiendo por qué está sucediendo sin embargo .. Supongo que proporcionamos el OP de dos maneras que funcionan la mayor parte del tiempo, aún invirtiendo otros 2 minutos en esto, aunque –
@Juan-yah, gracias por convencerme de pasar mucho más tiempo de lo que esperaba en esta pregunta;) ¿qué podemos hacer? do, dang desarrolladores. –