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...