Foros del Web » Programando para Internet » Javascript »

Agregar evento a input dinamico

Estas en el tema de Agregar evento a input dinamico en el foro de Javascript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 03/05/2010, 16:24
Avatar de goncofre  
Fecha de Ingreso: febrero-2008
Ubicación: Santiago, Chile
Mensajes: 22
Antigüedad: 16 años, 9 meses
Puntos: 0
Agregar evento a input dinamico

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.
  #2 (permalink)  
Antiguo 03/05/2010, 17:10
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: Agregar evento a input dinamico

recuerda que estas creando una funcion anonima que invoca a otra funcion, en este caso a validaTecla. la funcion validaTecla devuelve un boolean para determinar si dicho caracter es permitido o no. pero, al la funcion ser invocada en una funcion anonima, el valor devuelto por validaTecla se pierde, de modo que la funcion anonima devuelve al evento undefined. desde la funcion anonima tienes que devolver lo devuelto por validaTecla.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 04/05/2010, 06:52
Avatar de goncofre  
Fecha de Ingreso: febrero-2008
Ubicación: Santiago, Chile
Mensajes: 22
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Agregar evento a input dinamico

Me funciono con esto:

Código:
input1.onkeypress = function(event) {return validaTecla(event,"num");}

Etiquetas: input, onkeypress, eventos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:57.