El error esta en la condicion logica del ultimo if.
Deberias unir las distintas clausulas con "o" en lugar "y".
Lo que quieres es mostrar el mensaje "El formulario contiene campos vacíos" y cancelar el envio si ALGUN campo esta vacio. Tal como lo tienes escrito ahora el mensaje solo se muestra si TODOS los campos estan vacios.
Por otra parte, no te hace falta tener tantas variables y una condicion de if tan larga.
Yo lo progamaria asi (sugerencia):
Codigo:
var camposVacios = 0;
if (document.forms[0].nombre.value=="" ) {
document.forms[0].nombre.style.backgroundColor="#ffffcc";
camposVacios++;
} else {
document.forms[0].nombre.style.backgroundColor="white";
}
if (document.forms[0].numidentificacion.value=="" ) {
document.forms[0].numidentificacion.style.backgroundColor="#ffffcc";
camposVacios++;
} else {
document.forms[0].numidentificacion.style.backgroundColor="white";
}
etc, etc ...
el ultimo if quedaria asi
Codigo:
if (camposVacios>0) {
alert("El formulario contiene "+camposVacios+" campos vacíos" );
} else {
document.forms[0].submit();
}
Creo que es mas sencillo.
Bueno en realidad, si tuviese que programar algo asi, hubiese creado un array que los campos que quiero verificar y luego los comprebaria con un bucle y tal, pero quizas eso sea complicarse la vida.