Foros del Web » Programando para Internet » Javascript »

Ayuda a mejorar este codigo

Estas en el tema de Ayuda a mejorar este codigo en el foro de Javascript en Foros del Web. Buenas, me gustaria que me ayudaran un poco con este codigo, el funciona perfectamente, apenas he leido unas 5 paginas acerca de javascript y lo ...
  #1 (permalink)  
Antiguo 19/12/2008, 10:46
Avatar de rudy69  
Fecha de Ingreso: octubre-2008
Ubicación: espndeportes.com
Mensajes: 195
Antigüedad: 15 años, 6 meses
Puntos: 7
Ayuda a mejorar este codigo

Buenas, me gustaria que me ayudaran un poco con este codigo, el funciona perfectamente, apenas he leido unas 5 paginas acerca de javascript y lo que se es casi nulo xD, gateando logre hacer este programa, a ver si me pueden ayudar a reducirlo mas o si hay alternativas mas faciles

Aqui pueden ver como funciona, disculpen la publicidad no se como poner ejemplos como he visto en las FAQ'S (tienen que esperar como 5 seg para que pueda correr, problemas con la publicidad y dar click fuera de ella o como sea ser pacientes si no les corre xd)
http://usuarios.lycos.es/rudychevez/prueba.php

Este es el codigo:
Código:
<html>
<head>
   <script language="javascript" type="text/javascript">
   function vera(){
   if (!document.getElementById) return false;
   fila = document.getElementById('hola1');
   fila.style.display = "";
   fila = document.getElementById('hola2');
   fila.style.display = "none";
   fila = document.getElementById('hola3');
   fila.style.display = "none";
   fila = document.getElementById('hola');
   fila.style.display = "none";    
   
   document.form1.monto.disabled = false;
   document.form1.cantidad.disabled = false;
   document.form1.tienda.disabled = false;
   
   document.form1.pais.disabled = true;
   document.form1.pais.value = document.form1.pais_.value;
   
   document.form1.estado.disabled = true;
   document.form1.estado.value = document.form1.estado_.value;   
   
   document.form1.ciudad.disabled = true;
   document.form1.ciudad.value = document.form1.ciudad_.value;
      
   document.form1.pagador.disabled = true;
   document.form1.pagador.value = document.form1.pagador_.value;  
    
   document.form1.servicio.disabled = true;
   document.form1.servicio.value = document.form1.servicio_.value;  
    
   }
   function verb(){
   if (!document.getElementById) return false;
   fila = document.getElementById('hola1');
   fila.style.display = "none";
   fila = document.getElementById('hola2');
   fila.style.display = "";
   fila = document.getElementById('hola3');
   fila.style.display = "none";
   fila = document.getElementById('hola');
   fila.style.display = "none";
   
   document.form1.monto.disabled = true;
   document.form1.monto.value = document.form1.monto_.value;
   
   document.form1.cantidad.disabled = true;
   document.form1.cantidad.value = document.form1.cantidad_.value;   
   
   document.form1.tienda.disabled = true;
   document.form1.tienda.value = document.form1.tienda_.value;   
   
   document.form1.pais.disabled = true;
   document.form1.pais.value = document.form1.pais_.value;
   
   document.form1.estado.disabled = true;
   document.form1.estado.value = document.form1.estado_.value;   
   
   document.form1.ciudad.disabled = true;
   document.form1.ciudad.value = document.form1.ciudad_.value;
      
   document.form1.pagador.disabled = true;
   document.form1.pagador.value = document.form1.pagador_.value;
   
   document.form1.servicio.disabled = false;
   }
   function verc(){   
   if (!document.getElementById) return false;
   fila = document.getElementById('hola1');
   fila.style.display = "none";
   fila = document.getElementById('hola2');
   fila.style.display = "none";
   fila = document.getElementById('hola3');
   fila.style.display = "";
   fila = document.getElementById('hola');
   fila.style.display = "none";
   
   document.form1.monto.disabled = true;
   document.form1.monto.value = document.form1.monto_.value;
   
   document.form1.cantidad.disabled = true;
   document.form1.cantidad.value = document.form1.cantidad_.value;   
   
   document.form1.tienda.disabled = true;
   document.form1.tienda.value = document.form1.tienda_.value; 
   
   document.form1.pais.disabled = false;
   document.form1.estado.disabled = false;
   document.form1.ciudad.disabled = false;
   document.form1.pagador.disabled = false;
   
   document.form1.servicio.disabled = true;
   document.form1.servicio.value = document.form1.servicio_.value;  
   } 

</script>
</head>


<body>
<form name="form1">

<br />
<input type="hidden" value="12" name="monto_">
<input type="hidden" value="123" name="cantidad_">
<input type="hidden" value="1234" name="tienda_">

<input type="hidden" value="12345" name="pais_">
<input type="hidden" value="234" name="estado_">
<input type="hidden" value="345" name="ciudad_">
<input type="hidden" value="456" name="pagador_">

<input type="hidden" value="6" name="servicio_">



<input type="radio" name="accion" onclick="vera()" value=1><font color=black size="-1" face="arial, helvetica">Modificar cantidades</font><br>
<input type="radio" name="accion" onclick="verb()" value=2><font color=black size="-1" face="arial, helvetica">Cambiar compa&ntilde;ia</font><br>
<input type="radio" name="accion" onclick="verc()" value=3><font color=black size="-1" face="arial, helvetica">Cambiar direccion</font><br>
<br />
<input type="text" value="2" name="monto" disabled><br />
<input type="text" value="2" name="cantidad" disabled><br />
<input type="text" value="2" name="tienda" disabled><br />
<br>
<input type="text" value="2" name="pais" disabled><br />
<input type="text" value="2" name="estado" disabled><br />
<input type="text" value="2" name="ciudad" disabled><br />
<input type="text" value="2" name="pagador" disabled><br />
<br>
<select name=servicio disabled>
<option value=0>Nuevo</option>
<option value=6 selected>Existente</option>
</select>

<br><br>
<font color=red size="-2" face="arial, helvetica" style="display:none" id="hola1">Puede modificar monto, moneda local y cargos, se hara un registro de esta accion.</font>
<font color=red size="-2" face="arial, helvetica" style="display:none" id="hola2">Solamente se permite camtiar la compa&ntilde;ia que uso el cliente, se guardara un registro de este movimiento.</font>
<font color=red size="-2" face="arial, helvetica" style="display:none" id="hola3">Puede cambiar: pais, estado, ciudad y pagador. No se hara reporte de este cambio</font>
<font color=red size="-2" face="arial, helvetica" style="display:" id="hola">Seleccione un accion</font>

</form>
</body>
</html>

Última edición por rudy69; 19/12/2008 a las 11:05
  #2 (permalink)  
Antiguo 20/12/2008, 19:13
Avatar de rudy69  
Fecha de Ingreso: octubre-2008
Ubicación: espndeportes.com
Mensajes: 195
Antigüedad: 15 años, 6 meses
Puntos: 7
Respuesta: Ayuda a mejorar este codigo

O al menos otro programa que haga lo mismo xD, ayuda! xDDDDDDDD
  #3 (permalink)  
Antiguo 21/12/2008, 00:50
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Ayuda a mejorar este codigo

Hola:

Debería intentar explicar lo que pretendes mejorar... por mi parte cuando veo cosas como "ayuda para mejor esto...", y luego un "churro", ni lo miro.

Creo que tienes 3 funciones prácticamente iguales, y posiblemente solo necesites una, pero dinos que es lo que quieres hacer, y con que campos o variables...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 21/12/2008, 02:58
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Ayuda a mejorar este codigo

Podrias usar getElementsByTagName...

Metes los INPUT por grupos(o sea.. los de Cantidad.. Compañia y Direcciones) dentro de DIVs..
obtenes el DIV(por getElementById) que contenga a X grupo.. ponele el de Cantidad...
luego haces var inputs=DIVdecantidad.getElementsByTagName('input') ;

Luego haces un FOR.. que recorra los elementos obtenidos en el getElementsByTagName....

Código javascript:
Ver original
  1. for(var i=0; inputs[i]; ++i)
  2. {
  3. inputs[i].disabled=true;
  4. var name=inputs[i].name+'_';
  5. inputs[i].value=document.form1[name].value;
  6. }

Es una idea.. vos deberias de modificarla segun tus posibilidades y tus intenciones
  #5 (permalink)  
Antiguo 21/12/2008, 15:08
Avatar de rudy69  
Fecha de Ingreso: octubre-2008
Ubicación: espndeportes.com
Mensajes: 195
Antigüedad: 15 años, 6 meses
Puntos: 7
Respuesta: Ayuda a mejorar este codigo

Mmm caricatos les explico mas.

El programa funciona perfectamente, lo que quiero es encontrar uno mas facil, mi poca experiencia en todo en especial Javascript no logro encontrar la manera de reducir el programa, hace lo que quiero que haga, pero que sea mas compacto y optimo.

Como crear una funcion que bloquee todos los input's y otra que los desbloquee cuando el array "accion" sea X, es muy extenso, lo quiero hacer mas compacto porque son mas opciones las que quiero introducir, y para cada radio button una funcion es muy complicado


Algo mas, los input's tipe hidden estan por si el usuario cambia lo que habia en un input's habiendo escogido una opcion que lo desbloqueo y cambia a otra, retorne al valor que tenia anteriormente.

PD: Mis posibilidades son reducidas jeje, por eso pido ayuda :D

Última edición por rudy69; 21/12/2008 a las 15:28
  #6 (permalink)  
Antiguo 21/12/2008, 15:35
Avatar de TresPuntoDos  
Fecha de Ingreso: septiembre-2008
Ubicación: Madrid, España
Mensajes: 242
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: Ayuda a mejorar este codigo

Yo creo que como te ha dicho Fernand() estaba bastante bien, mucho mas "compacto" como tu dice
__________________
Tres punto Dos - Mi Blog sobre J2EE, Java, Struts y Diseño Web
Proyecto BloJ - Crea tu blog Java
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 07:01.