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:
**En el input:<option value="V" selected="selected" onclick="changeNum()">V - </option> <option value="E" onclick="changeLet()">E - </option>
Código:
**Funciones changeNum() y changeLet():<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)" />
Código:
**Funciones Num(event) y Let(event):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)"; }
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); }