Foros del Web » Programando para Internet » Javascript »

Problema al Programar evento onkeyPress

Estas en el tema de Problema al Programar evento onkeyPress en el foro de Javascript en Foros del Web. En el siguiente formulario intento pasar el foco( Mozilla Firefox ) pero me indica la que variable e no esta declara: Cita: <input type='text' id='titulo' ...
  #1 (permalink)  
Antiguo 20/01/2010, 17:33
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 14 años, 10 meses
Puntos: 2
Exclamación Problema al Programar evento onkeyPress

En el siguiente formulario intento pasar el foco(Mozilla Firefox) pero me indica la que variable e no esta declara:
Cita:
<input type='text' id='titulo' class='form' size='50' tabindex='1' name='nombrep01' value='<?=$nombrep01?>' onKeyPress="var tecla;tecla = (document.all) ? e.keyCode : e.which; if(tecla == 13)
{ descripcion.focus();}"></input>
lo tuve que poner ahi ya que tengo varias input y tendria que hacer un pase de foco a cada 1; ya teno varios meses intentando hacer eso y no me sale; ni siquiera con tabindex; por cierto eso dentro de un modalbox.
  #2 (permalink)  
Antiguo 20/01/2010, 17:44
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
Puntos: 1485
Respuesta: Problema al Programar evento onkeyPress

cambia e por event, asi te debe funcionar en cualquier navegador. explicacion: en los navegadores que soportan el modelo estandar de eventos se crea un objeto evento con nombre event. este objeto existe dentro del propio manejador de evento (event listener). en el caso de iexplorer tambien te funciona pero no porque éste tenga soporte para el model estandar de eventos, sino porque en su propio modelo el objeto de evento tambien se llama event.

quizas tu confusion se debe por alguna costumbre de ver funciones donde recibe como argumento el objeto evento y éste esta nombrado como e.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 20/01/2010, 17:48
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Problema al Programar evento onkeyPress

aleluya;aleluya;aleluya; gracias mial gracias; al fin puedo terminar esto; nadan que fastidian por ese asunto.
Mil gracias, zerokilled. Final:
Cita:
onKeyPress="var tecla;tecla = (document.all) ? event.keyCode : event.which; if(tecla == 13)
{ descripcion.focus();}"
  #4 (permalink)  
Antiguo 20/01/2010, 18:14
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
Puntos: 1485
Respuesta: Problema al Programar evento onkeyPress

jejeje, es bien gracioso verte sobre exaltado!

añadiendo mas detalles para que en un futuro puedas manejarte correctmente. como decia, quizas tu confusion se debe por alguna costumbre de ver funciones donde recibe como argumento el objeto evento y éste esta nombrado como e. un ejemplo que quizas te ayude a entenderlo.
Código:
// Event Model 0;
<input type="button" value="click me" onclick="alert(event);" />
este ejemplo funciona tanto en iexplorer como en navegadores estandar. los listener no son otra cosa que funciones. en los navegadores estandar, cuando un listener captura un evento, el navegador le pasa el objeto que contiene la informacion acerca del evento como si fuera un parametro pasado a una funcion. sin embargo, iexplorer no se comporta asi porque tiene su propio modelo. la unica razon por la que el codigo anterior funciona en iexplorer es porque el navegador crea la variable global event el cual tiene el mismo proposito que el objeto event de los navegadores estandar, proveer informacion acerca del evento ocurrido.

el mismo codigo anterior pero con modificaciones leves.
Código:
<input type="button" value="click me" onclick="alert('numero de argumentos: ' + arguments.length + '\ntipo de evento: ' + arguments[0].type);" />
fijate que esta vez he cambiado event por arguments[0]. arguments es un objeto de las funciones que contiene todos los argumentos pasado a la funcion cuando fue invocado. si compruebas el ejemplo en iexplorer no te va a funcionar, de nuevo por no seguir el mismo modelo.

ahora bien, la posible forma en que probablemente estas acostumbrado verlo.
Código:
<script>
function clickme(e){
alert('numero de argumentos: ' + arguments.length + '\ntipo de evento: ' + 
e.type // solo como muestra, aqui utilizo el argumento e;
);
}
document.onclick = clickme; // se asigna la funcion como manejador del listener;
</script>
es practicamente lo mismo como los ejemplos anteriores, salvo que en lugar de definir el manejador como atributo HTML se define como propiedad en javascript. de nuevo sucede que en iexplorer no funciona por la misma razon. el punto que quiero demostrar es que e es un argumento de la funcion que recibe el objeto event porque el navegador automaticamente se lo pasa. por supuesto, aqui hablo de navegadores con el modelo estandar. quizas de aqui es donde viene tu confusion.

para hacerlo funcionar en iexplorer habria que crear una funcion anonima que invoque la funcion pasando como parametro el objeto event.
Código:
<script>
function clickme(e){
alert('numero de argumentos: ' + arguments.length + '\ntipo de evento: ' + 
e.type // solo como muestra, aqui utilizo el argumento e;
);
}
document.onclick = function(){
clickme(event);
}
</script>
aunque funciona en iexplorer, deja de funcionar en los demas navegador. la razon es simple, event (en el codigo anterior) no es una variable o argumento definida en la funcion. recuerda que en el modelo estandar el objeto evento es pasado a la funcion, por lo que el objeto existe en arguments. para hacerlo funcionar en todos los navegadores hay que pasarle un valor u otro.
Código:
<script>
function clickme(e){
alert('numero de argumentos: ' + arguments.length + '\ntipo de evento: ' + e.type);
}
document.onclick = function(){
clickme(arguments[0] || event);
}
</script>
o bien podrias darle un nombre al argumento para no usar arguments.
Código:
<script>
function clickme(e){
alert('numero de argumentos: ' + arguments.length + '\ntipo de evento: ' + e.type);
}
document.onclick = function(e){
clickme(e || event);
}
</script>
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 20/01/2010 a las 18:26
  #5 (permalink)  
Antiguo 20/01/2010, 18:17
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Problema al Programar evento onkeyPress

cierto mayormente veo eso con la funcion e; ahora tengo otro incoveniente; funciona con la tecla 13; peroro si le pongo la tecla 9 o 11; q es para tab; bueno una de esas 2 es para tab; no me coge; el foco.
  #6 (permalink)  
Antiguo 20/01/2010, 19:02
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
Puntos: 1485
Respuesta: Problema al Programar evento onkeyPress

he intentado varias cosas y la verdad me he liado con el codigo que tenia pero creo que al final me estaba desenfocando del tema principal. vamos por lo obvio, ¿que tipo de objeto es description? asegurate que sea un elemento. tambien explica en que sentido no te funciona. y si puedes, muestra un codigo que refleje tu situacion, me ayudara mucho a entenderte.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 20/01/2010, 19:09
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Problema al Programar evento onkeyPress

si claro disculpa; solo que como o puede subir imagenes el copiar el texto es un tanto engorroso en fin ahi va el error si usa el ASCII para tab:
Cita:
Java Script Error: this.focusable.Elements.first() is undefined
Como te recuerdo; eso solo con la tecla tab(8 ó 9 ó 11); pero si le hago con la tecla enter (13) no hay problema.
A por cierto todos son text.

Última edición por zeuzft; 20/01/2010 a las 19:10 Razón: olvide el tipo de input
  #8 (permalink)  
Antiguo 20/01/2010, 19:23
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
Puntos: 1485
Respuesta: Problema al Programar evento onkeyPress

me perdistes! cuando dices ASCII no se si te refieres a la codificacion o si te refieres a algun framework o parecido, del cual no tengo idea. si te refieres ASCII como codificacion, pues no se a que viene el tema, pues el codigo ASCII no es el problema. claro, cuando hice la prueba lo hice con el codigo ASCII correcto, el cual es 9. pero estaba teniendo resultados disparejos y no se si es lo mismo que te esta sucediendo a ti. a mi me sucede que en lugar de ubicar el foco en el elemento desea el foco se ubica en el siguiente elemento. pero el comportamiento se debe al evento onkeypress. intenta cambiando onkeypress por onkeyup.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #9 (permalink)  
Antiguo 21/01/2010, 15:34
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Problema al Programar evento onkeyPress

claro cuando digo codigo ASCII; lo digo solo por el numero de tecla de tab; no podria implementarlo en el evento onkeyup; ya que esta programado esa parte para restringir el tipo de datos ingresados. con el el 9 como dije no me envia foco solo me arroja ese mensaje en la barra de estado:
Cita:
Java Script Error: this.focusable.Elements.first() is undefined
  #10 (permalink)  
Antiguo 21/01/2010, 16:07
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
Puntos: 1485
Respuesta: Problema al Programar evento onkeyPress

lamento no serte de mas ayuda porque segun el error me hace entender que estas usando alguna libreria. personalmente yo no trabajo con ninguna libreria. si estas usando algun framework pidele a un moderador que te mueva el tema al foro de framework. si no es un framework, tendras que indicarnos que codigo estas usando porque veo propiedades que no son estandar, por ejemplo focusable.Elements y el metodo first.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #11 (permalink)  
Antiguo 21/01/2010, 16:56
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 14 años, 10 meses
Puntos: 2
De acuerdo Respuesta: Problema al Programar evento onkeyPress

buena la verdad; que yo vea y sepa solo ando f¡trabajando con un frameset; y luego tablas; pero fin dejemoslo con enter; ya que es lo unico con lo que si funciona.
Gracias por todo zerokilled.

Etiquetas: onkeypress, programación, 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 11:38.