Hola de nuevo, Sharik
No capto qué es lo que te funciona y qué no.
Me temo que se te estén mezclando varias ideas o soluciones que te han dado.
A ver si lo aclaro:
1) La página de partida es en la que va todo el código que hemos estado discutiendo. No importa cómo se llame (principal.htm o como sea). Tampoco importa que el formulario se llame igual.
2) En esa página debe ir incluido el código javascript (
<script language="JavaScript"> etc.) dentro del <head>, y el código del formulario (
<form etc.) dentro del <body>.
Tal como está la función 'validar' del último código de Kaopectate, debes llamarla con
<form
..... name="principal" onsubmit=\"return validar()">
y no con
name="formulario"

ni con
onsubmit=\"return validar(this)">
3) Si no tienes un archivo 'principal.php' y no sabes para qué lo quieres, puede que no lo necesites (depende del punto 4). La validación ya la estás haciendo con el javascript de la cabecera del documento.
4) ¿Qué quieres que ocurra una vez verificado que se han introducido el nombre y la contraseña? ¿Abrir una nueva página?
Si esa nueva página fuese 'principal.php', no sé gran cosa de PHP, pero creo que al devolver la función
validar un
false quizás no se envíe el formulario, es decir, no se llame a 'principal.php', y sí se haga si devuelve un
true. Ahora bien, si tu único propósito es validar los datos ¿qué debe hacer después tu página? Puede que te sobre lo de
method="post" action="principal.php"