Mira, el método focus() sirve para dar foco a un elemento.
Por otro lado están los eventos onfocus() y onblur() que sirven para disparar funciones cuando un elemento gana o pierde foco respectivamente.
No encontré ninguna propiedad que diga si un elemento tiene el foco o no.
Se me ocurre que podrías tener una variable global booleana que esté en true al principio cuando haces onfocus cuando carga la página y que TODOS los campos de los formularios llamen funciones que cambien la variable esa cuando ganan y pierden foco.
Por ejemplo:
Código Javascript
:
Ver originalvar HayFoco = true;
function GanoFoco(){
HayFoco = true;
}
function PierdoFoco(){
HayFoco = false;
}
function RevisoFoco(){
if(!HayFoco){
document.getElementById("primerimput").focus();
}
}
Luego
Código HTML:
Ver original<body onKeyUp="RevisoFoco();"> ...
...
<input type="text" id="input_n" onFocus="GanoFoco();" onBlur="PierdoFoco();"> ...
El tema cuando pasas de un input a otro es ver qué sucede primero, si el onBlur del que dejas o el onFocus del que clickeas.
Chequéalo y me dices.