Foros del Web » Programando para Internet » Jquery »

Problema con jquery al intentar enviar un formulario a un componente de joomla

Estas en el tema de Problema con jquery al intentar enviar un formulario a un componente de joomla en el foro de Jquery en Foros del Web. Hola Aunque estoy trabajando con joomla 1.5, el problema es con jquery así que pienso que debería poner aquí mi problema, pero digo lo de ...
  #1 (permalink)  
Antiguo 08/10/2012, 09:32
 
Fecha de Ingreso: noviembre-2005
Mensajes: 186
Antigüedad: 19 años
Puntos: 1
Pregunta Problema con jquery al intentar enviar un formulario a un componente de joomla

Hola

Aunque estoy trabajando con joomla 1.5, el problema es con jquery así que pienso que debería poner aquí mi problema, pero digo lo de joomla por si tiene su importancia.

Pongo el código y ahora os explico:
Código:
jQuery(document).ready(function(jQuery) {
	jQuery('#miform').submit(function(){
			result = true;

			//tengo muchas comprobaciones de este tipo, telefono, address,etc..
			var telephone = jQuery('#telephone').val();
			if(telephone!=''){
				result = false;
				//mensajito
                         }
			//llego a la comprobación del email, AQUI VIENE EL PROBLEMA, ANTES TODO BIEN

                          var email = jQuery('#email').val();
			if(email!=''){
				result = validarEmail(JQuery('#email'));
				//mensajito
                         }
                     return result;
		});

       function validarEmail(email){
		var value = email.val();
	
		jQuery.post('index.php?option=com_micomponente&format=raw',
				  {email:value},
					  function(data){
					     if(data=='error'){
						return false;
					     }
					  }
                        });
		
		
		return true;
	}
Os digo lo que no está saliendo, cuando entra en la función validarEmail, primero devuelve true y luego hace la función post, es decir, va a la funcion JQuery.post, la hace y antes de dar el resultado, pasa hasta el final y devuelve el return true.

¿Cómo se esto ? Pues poniendo alert('xxx') y parando el submit con un return false al final.

La pregunta es porque en la función validarEmail no espera a que el post devuelva el resultado (que por cierto lo devuelve bien, si el email ya esta en la base de datos) y luego sigue adelante.

Un saludo.
  #2 (permalink)  
Antiguo 08/10/2012, 09:39
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Problema con jquery al intentar enviar un formulario a un componente de jo

recuerde que AJAX es Asíncrono, por lo que siempre validarEmail retornará true, además no entiendo el por qué validar un email con ajax, para luego volver a enviar la data, valide todo en usa sola petición, puede validar si el email es correcto desde javascript con una expresión regular
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 08/10/2012, 12:22
 
Fecha de Ingreso: noviembre-2005
Mensajes: 186
Antigüedad: 19 años
Puntos: 1
Respuesta: Problema con jquery al intentar enviar un formulario a un componente de jo

Hola, el caso es que no válido si el email tiene un formato válido, válido que en la base de datos, nadie tiene ese email.

Este es el proceso- JQuery.post -> va a una página, allí hago un select email from jos_users, y miro si algún usuario tiene ese email, si lo tiene devuelvo error, por eso necesito ajax, necesito de alguna manera comprobar que el email no está en la base de datos, antes de pulsar el botón.

Saludos
  #4 (permalink)  
Antiguo 08/10/2012, 13:16
 
Fecha de Ingreso: noviembre-2005
Mensajes: 186
Antigüedad: 19 años
Puntos: 1
Respuesta: Problema con jquery al intentar enviar un formulario a un componente de jo

Me contesto a mi mismo, sólo hay que poner un flag y siempre es false, menos cuando ajax devuelve el valor que si es correcto lo pongo a true.

Etiquetas: componente, formulario, funcion, joomla, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:20.