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 originalvar aplicacion = {
campoTexto : null,
lista : null,
funcion1 : function() {
// lo que querés que haga la funcion1
alert('funcion1');
},
funcion2 : function() {
// lo que querés que haga la funcion2
alert('funcion2');
},
asignarFuncion : function() {
var valor = aplicacion.lista.value;
if (valor === 'CO') {
aplicacion.campoTexto.onclick = aplicacion.funcion1;
} else if (valor === 'CL') {
aplicacion.campoTexto.onclick = aplicacion.funcion2;
}
},
asignarEventos : function() {
aplicacion.lista.onchange = aplicacion.asignarFuncion;
aplicacion.asignarFuncion();
}
};
window.onload = function() {
aplicacion.campoTexto = document.getElementById('nom_clicon');
aplicacion.lista = document.getElementById('clicon');
aplicacion.asignarEventos();
}
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.