var kLetAlfaNum = ['0','11','2','3','4','5','6','7','8','9']; var kBuf = ['','','','','','','','','','']; var index = 0; var nowTime = new Date().valueOf(); var keyStroke = ''; var timeOutMsecs = 1000; function focusField(nForm, nField) { if (document.forms[nForm].elements[nField]) { document.forms[nForm].elements[nField].focus(); } return false; } function tecla() { if (event.keyCode == 0) return; var nField = document.getElementById(event.srcElement.id).name; var nForm = document.getElementById(event.srcElement.id).form.name; kLet = kLetAlfaNum; var field = document.forms[nForm].elements[nField]; var texto = field.value; var code = parseInt(event.keyCode); var iKeyStroke = -1; if (code >= 48 && code <= 57) { iKeyStroke = code-48; } switch (iKeyStroke) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: var now = new Date().valueOf(); if ((now - nowTime) > timeOutMsecs && keyStroke != '') { kBuf = ['', '', '', '', '', '', '', '', '', '']; index++; } else { if (code != keyStroke && keyStroke != '') { kBuf = ['', '', '', '', '', '', '', '', '', '']; index++; } } var borrar = false; if (kBuf[iKeyStroke] == '' || kBuf[iKeyStroke].length == kLet[iKeyStroke].length) { kBuf[iKeyStroke] = kLet[iKeyStroke].charAt(0); } else { if (iKeyStroke == 1) { borrar = true; } kBuf[iKeyStroke] += kLet[iKeyStroke].charAt(kBuf[iKeyStroke].length); } if (borrar) { if (index > 0) { index--; } field.value = texto.substr(0, index); keyStroke = ''; nowTime = new Date().valueOf(); } else { letter = kBuf[iKeyStroke].charAt(kBuf[iKeyStroke].length-1).toUpperCase(); field.value = texto.substr(0, index) + letter; keyStroke = code; nowTime = now; } break; default: switch(code) { case 42: // asterisco case 67: case 99: return false; break; case 35: // almohadilla case 45: case 65: case 97: return false; break; default: break; } break; } field.focus(); event.keyCode = null; }