Hola:
Debes asegurarte de que un return sea la última instrucción de una función o evento... lo que viene detrás no se ejecuta.
Un ejemplillo:
Código:
<html>
<head>
<title>
validator
</title>
<script type="text/javascript">
function validar(f) {
function aceptar(){window.open("", "popup", "");}
function cancelar(){window.alert("poblema");}
var retorno = new Array();
retorno[false] = cancelar;
retorno[true] = aceptar;
resultado = f.texto.value != "";
retorno[resultado]();
return resultado;
}
</script>
</head>
<body >
<form action="prueba.html" onsubmit="return validar(this)" target="popup" method="get" >
<input name=texto type=text />
<input type=submit />
</form>
</body>
</html>
Saludos