Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/04/2014, 12:37
alejandromaringomez
 
Fecha de Ingreso: abril-2010
Mensajes: 267
Antigüedad: 14 años, 7 meses
Puntos: 1
Validar form una sola vez en ajax

Hola amigos,
Un cliente me pidió que en el caso de que una persona en un formulario de contacto validado con ajax se salte el escribir el asunto, a la segunda vez no te pida de nuevo el introducirlo, yo el formulario lo valido así:

Código:
$(document).ready(function() { 
	
	// Enviamos el formulario de contacto una vez hecho click al botón de enviar //
	
	$('#formulario_contacto').submit(function(e){
	
		// Comprobamos el nombre que no esté vacío

		if(formulario_contacto.nombre.value.length==0) {
		
			// Resaltamos el campo
		
			formulario_contacto.nombre.focus();
			
			// Escribimos el error en el div
			
			$('#formulario_contacto_estado').html('<div class="error"><p>Falta el nombre</p></div>');
			
			// Mostramos el div con ajax
			
			$('#formulario_contacto_estado').fadeIn(500);
			
			// No continuamos el envio del formulario
			
			return false;
			
		}
		
		// Comprobamos el email que no esté vacío

		if(formulario_contacto.email.value.length==0) {
		
			// Resaltamos el campo
		
			formulario_contacto.email.focus();
			
			// Escribimos el error en el div
			
			$('#formulario_contacto_estado').html('<div class="error"><p>Falta el email</p></div>');
			
			// Mostramos el div con ajax
			
			$('#formulario_contacto_estado').fadeIn(500);
			
			// No continuamos el envio del formulario
			
			return false;
			
		}
		
		// Comprobamos el email que sea correcto
		
		formatoemail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

		if(!formatoemail.test(formulario_contacto.email.value)) {
		
			// Resaltamos el campo
		
			formulario_contacto.email.focus();
			
			// Escribimos el error en el div
			
			$('#formulario_contacto_estado').html('<div class="error"><p>El email no es v&aacute;lido</p></div>');
			
			// Mostramos el div con ajax
			
			$('#formulario_contacto_estado').fadeIn(500);
			
			// No continuamos el envio del formulario
			
			return false;
			
		}
		
		// Comprobamos si se ha escrito algo en el campo del teléfono

		if(formulario_contacto.telefono.value.length!=0) {
		
			// Comprobamos el teléfono en caso de haber escrito algo
		
			if(isNaN(formulario_contacto.telefono.value)) {
			
				// Resaltamos el campo
			
				formulario_contacto.telefono.focus();
				
				// Escribimos el error en el div
				
				$('#formulario_contacto_estado').html('<div class="error"><p>El telefono no es v&aacute;lido</p></div>');
				
				// Mostramos el div con ajax
			
				$('#formulario_contacto_estado').fadeIn(500);
				
				// No continuamos el envio del formulario
				
				return false;
				
			}
			
		}
		
		// Añadimos un valor de un 0 como que el asunto aún no se ha enviado ninguna vez
		
		var asunto_intento = 0;
		
		// Comprobamos si el intento es igual a 0, por lo que si es cierto mostramos el error
		
		if(asunto_intento == false) {
		
			// Comprobamos el asunto que no esté vacío

			if(formulario_contacto.asunto.value.length==0) {
			
				// Resaltamos el campo
			
				formulario_contacto.asunto.focus();
				
				// Escribimos el error en el div
				
				$('#formulario_contacto_estado').html('<div class="error"><p>Falta el asunto</p></div>');
				
				// Mostramos el div con ajax
				
				$('#formulario_contacto_estado').fadeIn(500);
				
				// Cambiamos el valor del intento para que ya no se muestre una segunda vez
				
				var asunto_intento = 1;
				
				// No continuamos el envio del formulario
				
				return false;
				
			}
		
		}
		
		// Comprobamos el mensaje que no esté vacío

		if(formulario_contacto.mensaje.value.length==0) {
		
			// Resaltamos el campo
		
			formulario_contacto.mensaje.focus();
			
			// Escribimos el error en el div
			
			$('#formulario_contacto_estado').html('<div class="error"><p>Falta el mensaje</p></div>');
			
			// Mostramos el div con ajax
			
			$('#formulario_contacto_estado').fadeIn(500);
			
			// No continuamos el envio del formulario
			
			return false;
			
		}
	
		// Obtenemos la url de destino de ese formulario
	
		var action = $(this).attr('action');
		
		// Obtenemos el contenido de inputs etc del formulario...
		
		var contenido = $(this).serialize();
		
		// Comenzamos el envío
		
		$.ajax({
		
			// Ponemos la forma de envío de datos al enviador, GET o POST
		
			type: 'POST',
			
			// Cojemos la url a la que se enviará el formulario
			
			url: action,
			
			// Incluimos los inputs y datos del formulario
			
			data: contenido,
			
			// Creamos acciones una vez enviado el formulario
			
			success: function(data) {
			
				// Ocultamos el titulo del formulario de contacto
				
				$("#contacto .titulo_apartado").fadeOut(500);
			
				// Ocultamos el formulario de contacto
				
				$("#contacto form").fadeOut(500);
				
				// Escribimos el estado una vez enviado
			
				$('#formulario_contacto_enviado').html(data);
				
				// Mostramos el div del estado de enviado
				
				setTimeout('$("#formulario_contacto_enviado").fadeIn(500);', 501);
				
				// Mostramos el boton de contactar una vez enviado
				
				$(".conta").fadeIn(500);
				
				// Vaciamos los campos una vez enviados
				
				$('#nombre').val('');
				$('#email').val('');
				$('#telefono').val('');
				$('#asunto').val('');
				$('#mensaje').val('');
				
            }
			
		});
		
		e.preventDefault();
		
	});
	
});
En la parte del asunto os fijaréis que hago variables, estoy intentandolo así pero no hay manera :((, porfavor ayudenme es urgente