Hola evoarte:
Es posible poner más de una función en cualquier evento, pero la palabra mágica "return" suele hacer terminar las secuencias de órdenes o funciones...
Podrías invertir el orden de los comandos, pero supongo que no te valdría...
Porqué no pruebas en guardar el resultado de "validar" en una variable y haces el return después del pasarvaloresycerrar()...
onsubmit="var salida = validar();pasarvaloresycerrar(); return salida;"
Espero que te sirva
Saludos