lo que estoy entendiendo es que cuando todos los datos son validos, el codigo se detiene aunque no se haya validado el resto. se detiene especificamente en el siguiente punto.
Código:
if(!validaFecha(fecha)){
divMensaje.innerHTML="<img src='../img/denied.gif'> Se necesita ingresar la fecha.";
} else if(!validaMatricula(matricula)){
divMensaje.innerHTML="<img src='../img/denied.gif'> La matricula no coincide con el formato.";
} else if(document.getElementById("txtNombre_I").value==''){
divMensaje.innerHTML="<img src='../img/denied.gif'> La matricula no esta registrada en sistema o no fue seleccionada de la lista de opciones.";
} else if(!document.getElementById("FV1").disabled){
if(!validaMoneda(cantidad1)){
divMensaje.innerHTML="<img src='../img/denied.gif'> La cantidad ingresada no coincide con el formato moneda.";
} else {return true;}
} else if(!document.getElementById("FV2").disabled){
if(!validaMoneda(cantidad2)){
divMensaje.innerHTML="<img src='../img/denied.gif'> La cantidad ingresada no coincide con el formato moneda.";
} else {return true;}
} else{
.. funciones que envian datos a php...
}
la razon es por la porcion en verde. ¿que exactamente pretendes hacer con el return true? tal como lo tienes significa "si el formato es valido, devuelve true". al invocar return, el resto no se analiza porque le estas indicando al interprete que debe salir de la funcion devolviendo un valor. lo mismo sucede con el IF que le sigue.
nunca se me habia ocurrido usar break sin bucles. si lo intentas, el interprete te indica que un break sin label solo puede estar contenido dentro de un bucle o switch. lo intente con label pero parece que tiene una forma muy rigida su uso. de todos modos, de momento no creo que un break te solucione. sigo investigando esta parte.