Foros del Web » Programando para Internet » Javascript »

Ayuda con OnSubmit

Estas en el tema de Ayuda con OnSubmit en el foro de Javascript en Foros del Web. Hola que tal... Tengo problemas con el OnSubmit del Form, soy algo novato en esto y no se si este omitiendo algo, por ello solicito ...
  #1 (permalink)  
Antiguo 21/03/2008, 21:18
 
Fecha de Ingreso: marzo-2008
Mensajes: 2
Antigüedad: 16 años, 1 mes
Puntos: 0
Ayuda con OnSubmit

Hola que tal...

Tengo problemas con el OnSubmit del Form, soy algo novato en esto y no se si este omitiendo algo, por ello solicito su ayuda...

Pretendo validar la informacion de un formulario antes de enviarlo y llamo la función encargada de dicha validación en el evento OnSubmit del formulario, este es el código:

Código HTML:
<form id="form1" name="form1" method="POST" onsubmit= "return validaformulario(this);" action="<?php echo $editFormAction; ?>" > 
La función se llama validaformulario y recibe un unico parametro que es un formulario, hasta donde he leido, dicha funcion retorna falso si alguna de los datos del formulario no es correcto, valida varios campos, pero en particular tengo problemas con la validacion del USUARIO y la CONTRASEÑA, anexo el codigo de la funcion:

Código HTML:
function validaformulario(formulario)
{
	//----------- Campo: Usuario
	if (formulario.tfUsuario.value.length == 0)
	{
		formulario.tfUsuario.focus();
		alert ('El campo Usuario esta vacio');
		return false;	
	}
	else if (formulario.tfUsuario.value.length > 20)
	{
		formulario.tfUsuario.focus();
		alert ('Los datos del campo Usuario son demasiados; maximo 20 caracteres');
		return false;	
	}
	else
	{
		var http_request;
		if (window.XMLHttpRequest) // Mozilla, Safari, ...
		{
			http_request = new XMLHttpRequest();
		}
		else if (window.ActiveXObject) // Internet Explorer
		{
			http_request = new ActiveXObject("Microsoft.XMLHTTP");
			
		}
		
		http_request.open("POST", "validausuario.php", true);
		http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		http_request.send("qry_usuario=" + formulario.tfUsuario.value);
		
		http_request.onreadystatechange = function()
		{
			if(http_request.readyState == 4)
			{
				//alert(http_request.responseText);
				if(http_request.responseText != "OK")
				{
					formulario.tfUsuario.focus();
					alert(http_request.responseText);
					return false;		
				}
			}
		}
	}

	//------------ Campo: Contraseña
	if(formulario.tfContrasena.value == formulario.textfield9.value)
	{
		if (formulario.tfContrasena.value.length  == 0 )
		{
			alert ('Campo de Contraseña vacio');
			formulario.tfContrasena.focus();
			return false;	
		}
		
		else if(formulario.textfield9.value.length == 0)
		{
			alert ('Campo de Confirmar Contraseña vacio');
			formulario.textfield9.focus();
			return false;	
		}
		else if (formulario.tfContrasena.value.length > 15)
		{
			formulario.tfContrasena.focus();
			alert ('Los datos de la Contraseña son demasiados; maximo 15 caracteres');
			return false;	
		}
	}
	else
	{

		formulario.tfcontrasena.value = '';
		formulario.textfield9.value = '';
		formulario.tfContrasena.focus();
		alert ('Las contraseñas deben de cohincidir');
		return false;
	}
        return true;
}
El problema en el campo USUARIO es:
- La funcion de Ajax lo hace correctamente, el alert() envia correctamente el mensaje que el usuario existe el siguiente paso despues del alert(), es que la funcion debe de retornar FALSE pero no retorna dicho valor, y la funcion al parecer continua y manda los datos del formulario. ¿Alguien pudiera ayudarme y decirme a que se debe esto?

El problema con el campo CONTRASEÑA:
- Al momento de comparar si las contraseña y la información del campo Confirmar Contraseña (textfield9) son iguales y estas son diferentes el sistema al parecer omite la instruccion del ELSE y envia el formulario como si las contraseñas fueran iguales.

Agradeceria su valisa ayuda...
  #2 (permalink)  
Antiguo 21/03/2008, 23:50
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 19 años, 5 meses
Puntos: 4
Re: Ayuda con OnSubmit

Deberias validar el campo contraseña antes de realizar la peticion ajax, asi...
Código PHP:
function validaformulario(formulario){
    
//----------- Campo: Usuario
    
if (formulario.tfUsuario.value.length == 0){
        
formulario.tfUsuario.focus();
        
alert ('El campo Usuario esta vacio');
        return 
false;    
    }else if (
formulario.tfUsuario.value.length 20){
        
formulario.tfUsuario.focus();
        
alert ('Los datos del campo Usuario son demasiados; maximo 20 caracteres');
        return 
false;    
    
//------------ Campo: Contraseña
 
}else    if(formulario.tfContrasena.value == formulario.textfield9.value){
        if (
formulario.tfContrasena.value.length  == ){
            
alert ('Campo de Contraseña vacio');
            
formulario.tfContrasena.focus();
            return 
false;    
        }else if(
formulario.textfield9.value.length == 0){
            
alert ('Campo de Confirmar Contraseña vacio');
            
formulario.textfield9.focus();
            return 
false;    
        }else if (
formulario.tfContrasena.value.length 15){
            
formulario.tfContrasena.focus();
            
alert ('Los datos de la Contraseña son demasiados; maximo 15 caracteres');
            return 
false;    
        }else{
            
formulario.tfcontrasena.value '';
            
formulario.textfield9.value '';
            
formulario.tfContrasena.focus();
            
alert ('Las contraseñas deben de cohincidir');
            return 
false;
        }
    }else{
        var 
http_request;
        if (
window.XMLHttpRequest){// Mozilla, Safari, ...
            
http_request = new XMLHttpRequest();
        }else if (
window.ActiveXObject){ // Internet Explorer
            
http_request = new ActiveXObject("Microsoft.XMLHTTP");            
        }
        
http_request.open("POST""validausuario.php"true);
        
http_request.setRequestHeader("Content-Type""application/x-www-form-urlencoded");
        
http_request.send("qry_usuario=" formulario.tfUsuario.value);        
        
http_request.onreadystatechange = function(){
        if(
http_request.readyState == 4){
            if(
http_request.responseText != "OK"){
                
formulario.tfUsuario.focus();
                
alert(http_request.responseText);
                return 
false;        
            }
        }
    }
 return 
true;

Espero haberlo hecho bien jejeje....
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
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:33.