Hola:
Los datos siguen siendo escasos...
¡Verás!, no se ve como está el formulario, tampoco se ve como son las funciones de la validación... cuando podrían usarse directamente...
Supongo que (por ejemplo) la función tieneValor sea así:
function tieneValor(control) {
return (control.value != "")
}
Pero no podemos adivinar... además, forzar el envío con f.submit(), a pesar que estemos en javascript, no es nada aconsejable. Usa botones submit que no muerden, y tienes así páginas accesibles.
Saludos