Ver Mensaje Individual
  #6 (permalink)  
Antiguo 27/10/2008, 12:35
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: cambiar función js de evento segun select

Si, bueno, tenía algunos errores de lógica
También te comenté mal el evento que tenés que usar, debería ser onchange y no onsubmit (este último es solamente para formularios)

También voy a explicar un poco lo que hace el código

1.- El motivo para declarar un objeto "aplicacion" es evitar las variables globales. Usando un objeto para alojar tus funciones y variables, no usás más que 1 variable global.

2.- Al momento de la carga de la página se asignan aplicacion.lista y aplicacion.campoTexto, para que correspondan al select y a la caja de texto, respectivamente.
Luego se les asignan los eventos correspondientes.
A la lista se le asigna una función que cambiará el manejador de eventos de la caja de texto según su valor, y también se ejecuta esa funcion para que la caja tenga una función inicial.

3.- El resto es igual que antes, si tenés alguna duda simplemente preguntá. Traté de hacer un código JS correcto, no invasivo (separado del HTML) y que siga las buenas prácticas de javascript. Aunque eso requiera utilizar algunas variables de más.
Código javascript:
Ver original
  1. var aplicacion = {
  2.  
  3.     campoTexto : null,
  4.     lista : null,
  5.  
  6.     funcion1 : function() {
  7.         // lo que querés que haga la funcion1
  8.         alert('funcion1');
  9.     },
  10.  
  11.     funcion2 : function() {
  12.         // lo que querés que haga la funcion2
  13.         alert('funcion2');
  14.     },
  15.  
  16.     asignarFuncion : function() {
  17.         var valor = aplicacion.lista.value;
  18.  
  19.         if (valor === 'CO') {
  20.             aplicacion.campoTexto.onclick = aplicacion.funcion1;
  21.         } else  if (valor === 'CL') {
  22.             aplicacion.campoTexto.onclick = aplicacion.funcion2;
  23.         }
  24.     },
  25.    
  26.     asignarEventos : function() {
  27.         aplicacion.lista.onchange = aplicacion.asignarFuncion;
  28.         aplicacion.asignarFuncion();
  29.     }
  30. };
  31.  
  32. window.onload = function() {
  33.     aplicacion.campoTexto = document.getElementById('nom_clicon');
  34.     aplicacion.lista = document.getElementById('clicon');
  35.     aplicacion.asignarEventos();
  36. }

El HTML ya no necesita javascript:
Código HTML:
<SELECT id="clicon" name="clicon">
          <OPTION value="CO" SELECTED>Contacto  </OPTION>
          <OPTION value="CL">Cliente  </OPTION>
        </SELECT>
 
<INPUT type="text" id="nom_clicon" SIZE="35" MAXLENGTH="35" value="" /> 

Saludos.