El cuento es que creo un input de este tipo:
  
Código:
 var input1 = document.createElement("input");
input1.name = "valor";
input1.id = "valor";
input1.type = "text";
input1.value = "0";
  Y tengo esta función:  
Código:
 function validaTecla(elEvento, permitidos) {
   // Variables que definen los caracteres permitidos
   var numeros = "0123456789";
   var caracteres = " abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ";
   var numeros_caracteres = numeros + caracteres;
   var teclas_especiales = [8, 37, 39, 46];
   // 8 = BackSpace, 46 = Supr, 37 = flecha izquierda, 39 = flecha derecha
   // Seleccionar los caracteres a partir del parámetro de la función
   switch(permitidos) {
      case "num":
         permitidos = numeros;
         break;
      case "car":
         permitidos = caracteres;
         break;
      case "num_car":
         permitidos = numeros_caracteres;
         break;
   }
   // Obtener la tecla pulsada
   var evento = elEvento || window.event;
   var codigoCaracter = evento.charCode || evento.keyCode;
   var caracter = String.fromCharCode(codigoCaracter);
   // Comprobar si la tecla pulsada es alguna de las teclas especiales
   // (teclas de borrado y flechas horizontales)
   
   var tecla_especial = false;
   for(var i in teclas_especiales) {
      if(codigoCaracter == teclas_especiales[i]) {
         tecla_especial = true;
         break;
      }
   }
   // Comprobar si la tecla pulsada se encuentra en los caracteres permitidos
   // o si es una tecla especial
   return permitidos.indexOf(caracter) != -1 || tecla_especial;
}
  Al input quiero agregarle esa función, lo hago de esta forma, pero no me resulta:  
Código:
 input1.onkeypress = function(event) {validaTecla(event,"num");}
  La función me resulta si la agrega de la forma normal, es decir, en los input creados con HTML, pero no los creados desde Javascript. 
De antemano gracias.