Que tal, les explico.
Tengo un formulario que en "onSubmit" le pide a la funcion JS "validar()" que valide los campos y las imagenes contenidas en el formulario pero y tengo la siguiente función que mientras se estan validando los datos muestra una pantalla en gris transparentoso y una imagen de "Cargando...".
Código:
$(function(){
var pop = function(){
$('#screenBS').css({"display": "block", opacity: 0.7, "width":$(document).width(),"height":$(document).height()});
$('#boxBS').css({"display": "block"});
$('#linkBS').css({"display": "block"});
}
$('#form01').submit(pop); // ID de formulario
});
La linea donde comienza el formulario es: <form action="" method="POST" id="form01" name="form01" enctype="multipart/form-data" onSubmit="return validar()">
El problema es si en onSubmit la funcion validar() devuelve un error $('#form01').submit(pop); de todas formas se ejecuta y entonces hace el bloqueo de pantalla y no esta cargando nada en el formulario.
Como podría modificar mi código JS para que se ejecute solo si la función validar() devuelve true?
o
Podría sustituir a .submit() de otra manera como para que se muestre en el momento en que lo deseo? Digamos, por ejemplo, onReady() o algo similar?
Dejo también el código de mi función validar() y comento que ya se que solo valida que no esten vacios los campos y no el contenido de ellos, lo que pasa es que el validar los caracteres lo hago con PHP.
Código:
function validar(){
// Primera sección de formulario
var Nombre = document.getElementById("nombre").value;
var Email = document.getElementById("email").value;
var Telefono = document.getElementById("telefono").value;
// Si el campo tiene el minimo de caracteres permitido entones continua con la
// verificacion del siguiente bloque de campos
if(!(Nombre.length < 10) && !(Email.length < 10) && !(Telefono.length < 10)){
// Segunda sección de formulario
var Modo = document.getElementById("modo").value;
var NombrePropiedad = document.getElementById("nombrePropiedad").value;
var DireccionCorta = document.getElementById("direccionCorta").value;
var Direccion = document.getElementById("direccion").value;
var Descripcion = document.getElementById("descripcion").value;
var Monto = document.getElementById("monto").value;
var Moneda = document.getElementById("moneda").value;
var TipoPropiedad = document.getElementById("tipo_propiedad").value;
var Recamaras = document.getElementById("recamaras").value;
var Bano = document.getElementById("bano").value;
var Muebles = document.getElementById("muebles").value;
var Niveles = document.getElementById("niveles").value;
var Cupo = document.getElementById("cupo").value;
// Si el campo tiene el minimo de caracteres permitido entones continua con la
// carga de las imagenes
if(Modo.length > 4 && NombrePropiedad.length > 4 && DireccionCorta.length > 5 && Direccion.length > 15 && Descripcion.length > 15 && Monto.length > 2 && Moneda.length > 2 && TipoPropiedad.length > 3 && Recamaras.length > 0 && Bano.length > 0 && Muebles.length > 0 && Niveles.length > 0 && Cupo.length > 0){
// Cuarta sección de formulario
var ImagenP = document.getElementById("imgP").value;
if(ImagenP.length > 0){
// Terminos y condiciones
var Terminos = document.getElementById("terminos").checked;
if(Terminos == 1){
return true;
}else{
alert("Para poder subir la propiedad debes aceptar que tienes autorización para publicar esta información en el sitio.");
return false;
}
}else{
alert('La última sección del formulario \"Imágenes\" debe incluir la fotografía principal de la propiedad, es la imagen que veran principalmente los usuarios, verifique e intente nuevamente.\nTodos los campos son obligatorios.');
return false;
}
}else{
alert('La segunda sección del formulario \"Datos de la Propiedad\" debe ser completada correctamente, verifique e intente nuevamente.\nTodos los campos son obligatorios.');
return false;
}
}else{
alert('La primera sección del formulario \"Datos Personales\" debe ser completada correctamente, verifique e intente nuevamente.\nTodos los campos son obligatorios.');
return false;
}
}
Agradezco mucho de antemano su tiempo.
Buena vibra desde México