Foros del Web » Programando para Internet » Javascript »

validacion de formulario

Estas en el tema de validacion de formulario en el foro de Javascript en Foros del Web. Problemas en funciones y variables javascript. Les explico mi problema, estoy realizando una validacion javascript, estoy utilizando ajax.. lo que quiero hacer es un formulario ...
  #1 (permalink)  
Antiguo 11/04/2011, 11:11
Avatar de juan_14nob  
Fecha de Ingreso: abril-2010
Mensajes: 552
Antigüedad: 14 años
Puntos: 6
validacion de formulario

Problemas en funciones y variables javascript. Les explico mi problema, estoy realizando una validacion javascript, estoy utilizando ajax.. lo que quiero hacer es un formulario de mensaje que envie y si un campo esta vacio o no cumple con las condiciones que se ponga el campo el borde de color rojo..el panel de firebug me dice este error:


Elemento referenciado por ID/NAME en el ámbito global. Use el estándar del W3C document.getElementById() en su lugar.
[Interrumpir en este error] var nombre=eliminaEspacios(form.nombre.value);

Elemento referenciado por ID/NAME en el ámbito global. Use el estándar del W3C document.getElementById() en su lugar.
[Interrumpir en este error] var email=eliminaEspacios(form.email.value);

Elemento referenciado por ID/NAME en el ámbito global. Use el estándar del W3C document.getElementById() en su lugar.
[Interrumpir en este error] var mensaje=eliminaEspacios(form.mensaje.value);


lo estoy haciendo de esta manera:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. onLoad=function(){
  3.     clasenormal="inputnormal";
  4.     claseError="inputError";
  5.  
  6.  
  7. }
  8. function limpiaForm()
  9. {
  10.     for(i=0; i<=4; i++)
  11.     {
  12.         form.element[i].className=claseNormal;
  13.     }
  14.     document.getElementById("nombre").className=claseNormal;
  15. }
  16. function campoError(campo)
  17. {
  18.     campo.className=claseError;
  19.     error=1;
  20. }
  21. function eliminaEspacios(cadena)
  22. {
  23.     // Funcion para eliminar espacios delante y detras de cada cadena
  24.     while(cadena.charAt(cadena.length-1)==" ") cadena=cadena.substr(0, cadena.length-1);
  25.     while(cadena.charAt(0)==" ") cadena=cadena.substr(1, cadena.length-1);
  26.     return cadena;
  27. }
  28.  
  29. function validaForm()
  30. {
  31.     //limpiaForm();
  32.     error=0;
  33.  
  34.     var nombre=eliminaEspacios(form.nombre.value);
  35.     var email=eliminaEspacios(form.email.value);
  36.     var mensaje=eliminaEspacios(form.mensaje.value);
  37.  
  38.    
  39.     if(!validaLongitud(nombre, 1, 4, 50)) campoError(nombre);
  40.     if(!validaLongitud(email, 1, 4, 50)) campoError(email);
  41.     if(!validaLongitud(mensaje, 1, 4, 50)) campoError(mensaje);
  42.  
  43.    
  44.     }
  45.    
  46.     function validaLongitud(valor, permiteVacio, minimo, maximo)
  47. {
  48.     var cantCar=valor.length;
  49.     if(valor=="")
  50.     {
  51.         if(permiteVacio) return true;
  52.         else return false;
  53.     }
  54.     else
  55.     {
  56.         if(cantCar>=minimo && cantCar<=maximo) return true;
  57.         else return false;
  58.     }
  59. }

Código HTML:
Ver original
  1.         <form id="form" class="formuclaefwfew" method="POST" action="contac.php">
  2.         <tr>
  3.             <td class="tables">Nombre: </td>
  4.             <td><input type="text" class="inputnormal" size="22" id="nombre"> </td>
  5.         </tr>
  6.         <tr>   
  7.             <td class="tables">E-mail: </td>
  8.             <td><input type="text" class="inputnormal" size="22" id="email" > </td>
  9.            
  10.         </tr>      
  11.         <tr>
  12.             <td class="tables">Comentario: </td>
  13.             <td><textarea class="inputnormal" id="mensaje"></textarea><br/> </td>
  14.         </tr>  
  15.            
  16.         </table>
  17.             <input class="but" type="button" value="Enviar" onclick="validaForm();"></td>
  18.            
  19.             <input class="but" type="reset" value="Borrar" ></td>
  20.            
  21.         </form>
  #2 (permalink)  
Antiguo 11/04/2011, 12:47
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: validacion de formulario

no todos los navegadores encuentran una referencia directa entre el id/name del form declarado en el HTML y el js, es por ello que siempre debe se usarse funciones del DOM:

document.getElementById('form') //en el caso de ID

o colecciones si se declaran con el atributo NAME:

document.forms['name_form'].elements['name_input']
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 11/04/2011, 13:17
Avatar de juan_14nob  
Fecha de Ingreso: abril-2010
Mensajes: 552
Antigüedad: 14 años
Puntos: 6
Respuesta: validacion de formulario

Cita:
Iniciado por maycolalvarez Ver Mensaje
no todos los navegadores encuentran una referencia directa entre el id/name del form declarado en el HTML y el js, es por ello que siempre debe se usarse funciones del DOM:

document.getElementById('form') //en el caso de ID

o colecciones si se declaran con el atributo NAME:

document.forms['name_form'].elements['name_input']
Hola, antes de todo queria darte las gracias por orientarme pero no consigo hacer lo que quiero, ya que hice lo que tu me dijiste y lo hice de esta manera:

Código Javascript:
Ver original
  1. var nombre = document.getElementById(nombre);
  2.     var email = document.getElementById(email);
  3.     var mensaje = document.getElementById(mensaje);
  4. document.write(nombre);

y luego hago document.write(nombre); para ver si llega el valor de la variable del formulario, pero aparece 'null' quiere decir que no llega nada del formulario (obviamente complete el campo nombre para la prueba)


saludos y espero que logren ayuadarme
  #4 (permalink)  
Antiguo 11/04/2011, 13:59
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: validacion de formulario

var nombre = document.getElementById('te olvidaste de las comillas');

docment.write() afecta el flujo del HTML, si lo que quieres es afectar un input usa su atributo value
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 11/04/2011, 14:11
Avatar de juan_14nob  
Fecha de Ingreso: abril-2010
Mensajes: 552
Antigüedad: 14 años
Puntos: 6
Respuesta: validacion de formulario

Cita:
Iniciado por maycolalvarez Ver Mensaje
var nombre = document.getElementById('te olvidaste de las comillas');

docment.write() afecta el flujo del HTML, si lo que quieres es afectar un input usa su atributo value
Hola si, me puse a revisar el codigo y lo corregi pero sigo sin poder hacer lo que quiero, en el transcurso de la validacion, cuando el script detecte el error quiero que la clase del input (osea 'inputnormal') cambie a ( 'inputError' ) ya que la clase inputError es la que contiene el borde en rojo, entiendes? Al corregir las comillas y agregarle el .value a las variables firebug no ha detectado ningun error pero tampoco hace lo que quiero que haga
  #6 (permalink)  
Antiguo 11/04/2011, 15:08
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: validacion de formulario

postea el código completo, así es más facil ayudarte

veo que aquí tratas como de declarar variables globales, pero usando el evento onload ¿de quien?:

Código Javascript:
Ver original
  1. onLoad=function(){
  2.     clasenormal="inputnormal";
  3.     claseError="inputError";
  4. }

para declarar variables globales, simplemente colocarlas fuera de cualquier función, en ámbito global:

y no te olvides de usar var

Código Javascript:
Ver original
  1. var clasenormal="inputnormal";
  2. var claseError="inputError";

así, dichas variables serán accesibles desde cualquier función en js
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Etiquetas: formulario
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 08:02.