Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/06/2009, 21:31
Avatar de Jacke87
Jacke87
 
Fecha de Ingreso: junio-2009
Mensajes: 2
Antigüedad: 15 años, 8 meses
Puntos: 0
Exclamación Cambiar evento OnKeyPress según OnClick

Hola!

Tengo un problema con el evento OnKeyPress...

Lo que tengo:

- Un Combo List con Nacionalidad.
- Un Input con ID.

Lo que deseo hacer:

- Al elegir Nacionalidad V - (Venezolano(a)) el Input sólo aceptará números.
- Al elegir Nacionalidad E - (Extranjero(a)) el Input sólo aceptará letras.

El problema:

Al inicio el input sólo acepta números (bien!), al elegir E -, acepta letras, números, símbolos (), y al cambiar de nuevo a V -, acepta letras, números, símbolos ().

No consigo el error, tengo WebDeveloper y Firebug instalados en Firefox y no me reportan errores.

Por favor, agradezco cualquier aporte. Aquí dejo el código.

El código:

**En el combolist:

Código:
<option value="V" selected="selected" onclick="changeNum()">V - </option>
<option value="E" onclick="changeLet()">E - </option>
**En el input:

Código:
<input type="text" name="prof_cod" id="prof_cod" title="*Coloque número de Cédula de Identidad o Pasaporte" class="required" onKeyPress="return Num(event)" />
**Funciones changeNum() y changeLet():

Código:
function changeNum() {
	document.getElementById("prof_cod").value="";
	document.getElementById("prof_cod").onkeypress="return Num(event)";
}
function changeLet(){
	document.getElementById("prof_cod").value="";
	document.getElementById("prof_cod").onkeypress="return Let(event)";
}
**Funciones Num(event) y Let(event):

Código:
//Sólo letras
function Let(e) { 
    tecla = (document.all) ? e.keyCode : e.which;
    if (tecla==8 || tecla==0) return true;
    patron = /[A-Za-z]/; 
    te = String.fromCharCode(tecla); 
    return patron.test(te); 
}

//Sólo números
function Num(b){    
	// NOTE: Backspace = 8, Enter = 13, '0' = 48, '9' = 57    
	tecla = (document.all) ? b.keyCode : b.which;
	if (tecla==8||tecla==0) return true;
	patron =/[0-9]/; 
    te = String.fromCharCode(tecla); 
    return patron.test(te); 
}