Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/07/2009, 15:15
Avatar de djaevi
djaevi
 
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 11 meses
Puntos: 47
Respuesta: A pesar de validar, envia los datos incorrectos

Mira te lo arme algo mas resumido el tema de la validacion aver que te parece yo lo probe y funciona lo mas bien:

Arme la funcion de una forma un tanto mas resumida y mas prolija si se quiere mira te la voy comentando :D...

Código PHP:
function validar_formulario() {
// en las primeras 2 lineas creo 2 variables para imprimir errores de validacion
// un array que colecta errores y una cadena donde se concatenan para que luego
// se muestran en un alert

var cadenaErrores "Error al llenar los siguientes campos:\n";
var 
errores = new Array();

// creo una variable que llame al formulario registro

    
var elForm document.registro;

// aca hago un bucle que recorra todos los elementos del formulario y los valide
// de acuerdo a su tipo para esto hago un switch dentro del for

     
for (var i=0i<elForm.elements.lengthi++) {

// en caso que sea tipo text o password pregunto por el largo del texto
// si es igual a 0 insertara el nombre de este campo en el array de errores
// para luego informar al usuario donde se equivoco

         
switch (elForm.elements[i].type) {
            case 
'text':
            if (
elForm.elements[i].value.length == 0) {errores.push(elForm.elements[i].name)}
            break;
            case 
'password':
            if (
elForm.elements[i].value.length == 0) {errores.push(elForm.elements[i].name)}
            break;

// si es un select en lugar del tamaño del texto pregunto por el numero de opcion
// seleccionado si es 0 se agrega al array de errores

            
case 'select-one':
            if (
elForm.elements[i].selectedIndex == 0) {errores.push(elForm.elements[i].name)}
            break;
            }
        }

// Por ultimo pregunto si el tamaño del array errores es distinto de 0
// de ser esto asi quiere decir que al menos hubo un error por lo cual no se puede
// hacer el submit entonces muestro los errores primero uniendolos a la cadena
// que declare antes llamada cadenaErrores y luego de concatenar hago el alert
// ya fuera del bucle for.

            
if (errores.length != 0)  {
                for (var 
i=0i<errores.lengthi++) {
                    
cadenaErrores += errores[i] + "\n";
                }
                
alert(cadenaErrores);

// en el else si el tamaño del array errores es 0 esto implica que no hubo errores
// y ahi recien si se envian los datos por submit por lo cual no tienes que filtrar
// los datos luego con php :D

            
}else{
                
elForm.submit();
                }
        } 
En el codigo html lo unico que hice fue sacarle al form la opcion onSubmit y al boton le cambie el tipo por type button ya que vos no vas a validar el formulario con el boton sino con la funcion javascript por lo cual lo unico que queremos que haga el boton es llamar a esa funcion y que en todo caso ella se encarga de hacer el submit :D... estas 2 lineas son las que modifique...

Código HTML:
<form name="registro" action="enviarRegistro.php" method="POST" enctype="multipart/form-data">

<input type="button" value="Agregar" onclick="validar_formulario();"> 
Salu2 espero te sirva