Foros del Web » Programando para Internet » Javascript »

Encontrar objeto IE6

Estas en el tema de Encontrar objeto IE6 en el foro de Javascript en Foros del Web. Hola que tal, tengo un problema con una función. Estoy haciendo una librería para revisión de formularios. Todo funciona bien en firefox, pero IE no ...
  #1 (permalink)  
Antiguo 25/02/2010, 13:08
 
Fecha de Ingreso: enero-2010
Mensajes: 152
Antigüedad: 14 años, 3 meses
Puntos: 5
Encontrar objeto IE6

Hola que tal, tengo un problema con una función.

Estoy haciendo una librería para revisión de formularios. Todo funciona bien en firefox, pero IE no lo acepta.

Primero, tenemos un input del tipo text:

Código HTML:
Ver original
  1. <input class="inputnormal" id="_Form_Registro_Nombre" type="text" name="nombre"/>

en una función le asignamos una función al evento onkeydown y le asignamos un valor a límite de 255 caracteres:
Código Javascript:
Ver original
  1. document.getElementById(campos[i]).limite=limites[i];
  2. crearEvento(document.getElementById(campos[i]),"keydown",limit);

Y la función asignada es esta:


Código Javascript:
Ver original
  1. var limit=function()
  2.         {
  3.         alert(this.id);
  4.         if(this.value.length>this.limite)
  5.             {
  6.             this.value=this.value.substring(0,this.limite)
  7.             }
  8.         }

Si selecciono el campo y presiono una tecla, en firefox me aparece la alerta: "_Form_Registro_Nombre", pero en IE me aparece: "Undefined".

Alguien sabe como puedo encontrar el objeto que ha llamado a la función haciendo referencia de sí mismo???
  #2 (permalink)  
Antiguo 25/02/2010, 13:41
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Encontrar objeto IE6

Código Javascript:
Ver original
  1. var obj = document.getElementById(campos[i]);
  2. obj.limite=limites[i];
  3. crearEvento(obj,"keydown",limit(obj));

Código Javascript:
Ver original
  1. var limit = function(objeto)
  2. {
  3.     alert(objeto.id);
  4.     if(objeto.value.length > this.limite)
  5.     {
  6.         objeto.value = objeto.value.substring(0,this.limite)
  7.     }
  8. }
__________________
HV Studio
Diseño y desarrollo web
  #3 (permalink)  
Antiguo 25/02/2010, 13:49
 
Fecha de Ingreso: enero-2010
Mensajes: 152
Antigüedad: 14 años, 3 meses
Puntos: 5
Respuesta: Encontrar objeto IE6

gracias por la respuesta, pero con ese cambio solo se ejecuta limit, pero no se asigna al campo para ser ejecutado durante el evento
  #4 (permalink)  
Antiguo 25/02/2010, 14:28
 
Fecha de Ingreso: enero-2010
Mensajes: 152
Antigüedad: 14 años, 3 meses
Puntos: 5
Respuesta: Encontrar objeto IE6

Actualizando:

Código Javascript:
Ver original
  1. var limit=function(evento)
  2.             {
  3.              alert(evento);
  4.               if(this.value.length>this.limite)
  5.                   {
  6.                   this.value=this.value.substring(0,this.limite)
  7.                   }
  8.               }

He notado que con esa modificación, en la variable "evento" se carga un objeto del tipo KeyboardEvent con información sobre la tecla pulsada y eso.... Saben si de aquí puedo tomar referencia sobre el campo en el que se disparó el evento???
  #5 (permalink)  
Antiguo 25/02/2010, 15:04
 
Fecha de Ingreso: enero-2010
Mensajes: 152
Antigüedad: 14 años, 3 meses
Puntos: 5
Respuesta: Encontrar objeto IE6

Actualizando de nuevo jejje, encontré una solución:

tuve que pasar el id del campo desde el momento de crear la función e instanciarla inmediatamente después:


Código Javascript:
Ver original
  1. var limit=function()
  2.                 {
  3.                 var campo=campos[i];
  4.                 this.ejecucion=function()
  5.                     {
  6.                     obj=document.getElementById(campo);
  7.                     if(obj.value.length>=obj.limite)
  8.                         {
  9.                         obj.value=obj.value.substring(0,(obj.limite-1))
  10.                         }
  11.                     }
  12.                 }
  13.             limit=new limit;

Esto consume mucha mas memoria ya que se crea y se instancia la función una vez por cada objeto, pero almenos así si lo acepta internet explorer....

Aun sigo pensando en que debemos penalizar el uso de ese explorador.

Etiquetas: encontrar, objeto
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 18:27.