Foros del Web » Programando para Internet » Javascript »

Cambiar los elmentos de un fórmulario

Estas en el tema de Cambiar los elmentos de un fórmulario en el foro de Javascript en Foros del Web. Estoy intentando hacer algo tán sencillo como cambiar el valor de la etiqueta class =" " de un formulario. Hago esto y consigo leer su ...
  #1 (permalink)  
Antiguo 24/02/2011, 13:26
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 17 años
Puntos: 1
Cambiar los elmentos de un fórmulario

Estoy intentando hacer algo tán sencillo como cambiar el valor de la etiqueta class =" " de un formulario.

Hago esto y consigo leer su valor actual:

Código Javascript:
Ver original
  1. document.getElementById("formulario").elements[i].className

Hago esto para cambiar us valor, pero no funciona:
Código Javascript:
Ver original
  1. document.getElementById("formulario").elements[i].className = "elnombrequemedalagana";

¿Qué es lo que estoy haciendo mal?
__________________
Blog: http://a-dream-of-dragon.blogspot.com
  #2 (permalink)  
Antiguo 24/02/2011, 13:29
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Cambiar los elmentos de un fórmulario

¿Puedes postear el código entero?
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #3 (permalink)  
Antiguo 24/02/2011, 13:50
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 17 años
Puntos: 1
Respuesta: Cambiar los elmentos de un fórmulario

Tengo un formulario con: id="formulario"

Lo que quiero hacer es: Si cualquiera de los campos del formulario está vacío, validar formulario devuelve false y se cambia la clase del campo para mostrar con CSS los bordes del recuadro del campo en rojo.

Código Javascript:
Ver original
  1. function validar()
  2. {
  3.     var camposTexto = document.getElementById("formulario").elements;
  4.     for(var i=0; i<camposTexto.length; i++)
  5.         if ((camposTexto[i].type == 'text' || camposTexto[i].type == 'password') && camposTexto[i].value == '')
  6.         {
  7.             document.getElementById("formulario").elements[i].className = "invalid";
  8.             return false;
  9.         }
  10.     return true;
  11. }

Ya digo que he probado a leer los valores de la etiqueta class y funcionaba, el problema está en la asignación.
__________________
Blog: http://a-dream-of-dragon.blogspot.com
  #4 (permalink)  
Antiguo 24/02/2011, 14:18
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Cambiar los elmentos de un fórmulario

Prueba a ponerle llaves ({}) al for.
Saludos :D
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #5 (permalink)  
Antiguo 24/02/2011, 14:58
 
Fecha de Ingreso: febrero-2011
Ubicación: Evolandia
Mensajes: 103
Antigüedad: 13 años, 2 meses
Puntos: 10
Respuesta: Cambiar los elmentos de un fórmulario

Tambien podrias colocar
camposTexto[i].className = "invalid";
en vez de
document.getElementById("formulario").elements[i].className = "invalid";

y ver si tus clases estan definidas correctamente y tambien el html, por q el js q pusiste esta correcto

Saludos!
  #6 (permalink)  
Antiguo 24/02/2011, 17:04
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 17 años
Puntos: 1
Respuesta: Cambiar los elmentos de un fórmulario

Pues no, no lo consigo. Esto es muy raro.

Este es mi código en html, junto con javascript son los dos que tengo hechos:

Código HTML:
Ver original
  1. <form id="formulario" onSubmit="return validar();"  method ="POST">
  2.         <table align="center" width="225" cellspacing="2" cellpadding="2" border="0">
  3.             <tr>
  4.                 <td align="right">USER/EMAIL:</td>
  5.                 <td><input type="text" name="user_email" size ="20" maxlength="25" class="prueba"></td>
  6.             </tr>
  7.             <tr>
  8.                 <td align="right">PASSWORD:</td>
  9.                 <td><input type="password" name="pass" size ="20" maxlength="16" class="prueba"></td>
  10.             </tr>
  11.             <tr>
  12.                 <td colspan="2" align="center"><input type="submit" name="submit" id="submit" value="ENTRAR"></td>
  13.             </tr>
  14.         </table>      
  15.         <input type="hidden" name="type" value="1">
  16.     </form>

Es muy extraño, porque puedo leer los valores por un alert, pero no puedo cambiar su valor
__________________
Blog: http://a-dream-of-dragon.blogspot.com
  #7 (permalink)  
Antiguo 24/02/2011, 17:15
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 17 años
Puntos: 1
Respuesta: Cambiar los elmentos de un fórmulario

Mmm... a ver, he detectado que SI que realiza la asignación, pero es extraño, porque acto seguido se borra.

Por 1 segundo cambia el estilo de los campos, pero inmediatamente después se vuelven a modificar las clases y se quedan como si no las hubiera modificado.

¿Alguna idea?
__________________
Blog: http://a-dream-of-dragon.blogspot.com
  #8 (permalink)  
Antiguo 24/02/2011, 17:32
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Cambiar los elmentos de un fórmulario

Las clases se deben cambiar con setAttribute:

document.getElementById("formulario").elements[i].setAttribute('className','invalid');
  #9 (permalink)  
Antiguo 24/02/2011, 17:44
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Cambiar los elmentos de un fórmulario

No tiene por qué, hay muchos atributos que sí se pueden usar directamente (id, name, className, action, value...), aunque haya alguno que requiere usar SetAttribute.
Saludos :D
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #10 (permalink)  
Antiguo 24/02/2011, 17:53
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 17 años
Puntos: 1
Respuesta: Cambiar los elmentos de un fórmulario

Todo parece estar causado por: onSubmit="return validar();"
porque si utilizo: onMouseMove="return validar();" (sobre alguno de los campos)
la asignación se queda permanente y se mantiene el cambio de mi CSS.
__________________
Blog: http://a-dream-of-dragon.blogspot.com
  #11 (permalink)  
Antiguo 24/02/2011, 18:06
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 17 años
Puntos: 1
Respuesta: Cambiar los elmentos de un fórmulario

vale a ver, me parece que ya lo tengo ¬¬

Es necesario pasar el formulario por parámetro en la función validar:

Código HTML:
Ver original
  1. onSubmit="return validar();"
Código Javascript:
Ver original
  1. function validar(f){f.elements[i].className="invalid";}
__________________
Blog: http://a-dream-of-dragon.blogspot.com

Etiquetas: Ninguno
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:06.