Hola Javier, cómo estás?
Hago un par de correcciones a tu código. La manera correcta de recoger el onsubmit de un formulario es haciendo referencia al formulario en sí. Y para detener el envío del mismo hasta que valide simplemente podés hacer un return false.
Te paso un ejemplo cortito de lo que quiero decir para que te hagas una idea y puedas implementarlo en tu código:
Código HTML:
<script type="text/javascript">
$('#frmsol').on("submit", function(event){
// Haces referencia a $(this) ya que fue el submit del form el que desencadenó la ejecución de la función
if ($(this).valid() != true) {
console.log("No Validooo");
return false;
} else {
console.log('valida');
}
});
</script>
Espero te sirva. Saludos!