Después de cada elemento de entrada del formulario, necesito hacer una verificación usando el mismo script.
Utilicé onblur=myFunction("name") (donde nam e es el atributo name= para el campo de formulario) en cada elemento de formulario, de modo que cuando el usuario presiona <tab> , el cursor avanza al siguiente campo de entrada.
El problema es que Firefox (Linux 93.0 - 64 bits) activa el evento onblur SOLAMENTE en campos de entrada de formularios impares. Los números pares pierden el foco sin ejecutar el controlador de eventos.
A veces, pero no siempre, puedo forzar el evento para que se active haciendo clic en un campo de entrada de formulario diferente o girando hacia afuera y hacia atrás en el formulario. Esto es muy consistente.
Aquí hay dos ejemplos de campos secuenciales del formulario real, ' fname ' activa el evento, ' lname ' no lo hace.
Hay un total de 17 campos de entrada con nombre. El estilo de estos campos tampoco refleja el estado "desenfocado" después de que el cursor sale del campo.
<label for="fname" class="shipping">First Name</label> <input type="text" class="shipping" name="fname" id="fname" maxlength=24 size=20 placeholder="First Name" autofocus onBlur=field_check("fname")> <label for="lname" class="shipping">Last Name</label> <input type="text" class="shipping" name="lname" id="lname" maxlength=48 size=30 placeholder="Last Name" required onBlur=field_check("lname")>¿Cómo arreglar este problema?
Gracias a los que respondieron, aunque nadie tenía una respuesta. Hice muchas pruebas y descubrí que el problema es la interferencia entre los estilos CSS y onBlur, onChange, etc. en línea. Cuando se eliminan, todo funciona como se esperaba, aunque ya no puedo determinar cuándo se completó un campo. Probando, descubrí que Firefox (Linux y Windows) responderá a cada segundo evento, por lo que las líneas alternas no tienen estilo y no informan la entrada de datos. Chrome en Windows se bloqueará después de ingresar el tercer campo y la ventana emergente no se puede cerrar sin cerrar el navegador. Una versión anterior de Internet Explorer (!) funcionó exactamente como se esperaba, pero no pude probar Edge ni Safari porque no los tengo instalados aquí.
En general, parece haber cierta desconexión entre la documentación y la implementación en los navegadores principales, pero se me acabó el tiempo para intentar encontrarlo, así que tendré que encontrar un "plan B".