Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Mover un div con .onkeypress

Estas en el tema de Mover un div con .onkeypress en el foro de Javascript en Foros del Web. Hola a todos. El otro día estuve pensando un script y ahora lo he probado pero he visto que no funciona y no entiendo el ...
  #1 (permalink)  
Antiguo 19/03/2014, 15:44
Avatar de blancoarnau  
Fecha de Ingreso: junio-2013
Mensajes: 119
Antigüedad: 11 años, 6 meses
Puntos: 0
Mover un div con .onkeypress

Hola a todos. El otro día estuve pensando un script y ahora lo he probado pero he visto que no funciona y no entiendo el error. Mi intención es que al pulsar las teclas izquierda y derecha el div se me mueva en esas direcciones. Solo lo he programado pensando en Google Chrome porque no era más que una prueba...

El HTML:

Código HTML:
Ver original
  1. <div id="objeto" style="height:100px; width:100px; background-color:black; position:absolute; top:10%; left:5%;"></div>
  2. </body>

El script:

Código Javascript:
Ver original
  1. document.onkeypress = function(a){
  2. /*IZQUIERDA*/
  3. if(a.keycode == 37){
  4.     var x = document.getElementById("objeto").style.left;
  5.     document.getElementById("objeto").style.left=(x.replace("%","")-1)+"%";
  6.     return x;
  7. }
  8. /*DERECHA*/
  9. if(a.keycode == 39){
  10.     var x = document.getElementById("objeto").style.left;
  11.     document.getElementById("objeto").style.left=(x.replace("%","")+1)+"%";
  12.     return x;
  13. }
  14. }
  #2 (permalink)  
Antiguo 20/03/2014, 07:18
Avatar de blancoarnau  
Fecha de Ingreso: junio-2013
Mensajes: 119
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Mover un div con .onkeypress

¿Nadie tiene idea de cómo arreglarlo?
  #3 (permalink)  
Antiguo 20/03/2014, 07:56
Avatar de jgdev13  
Fecha de Ingreso: abril-2013
Mensajes: 40
Antigüedad: 11 años, 8 meses
Puntos: 4
Respuesta: Mover un div con .onkeypress

Puedes hacerlo con un setInterval y con las funciones "keydown" y "keyup", que cuando el interval esté pausado, presiones la tecla que desees y lo ponga en movimiento y cuando la sueltes lo pause nuevamente, mira un ejemplo:

Código HTML:
Ver original
  1. <!doctype html>
  2. <html lang="en">
  3.   <meta charset="UTF-8">
  4.   <title>Test</title>
  5.   <script>
  6.     window.onload = function() {
  7.       var rigthPress = false,
  8.           leftPress = false,
  9.           intervalVelocity = 200;
  10.      
  11.       // Function to move divs
  12.       setInterval(function() {
  13.        
  14.         if(rigthPress && !leftPress) {
  15.          // Mover div a la derecha
  16.          console.log('derecha')
  17.        }
  18.        
  19.        if(leftPress && !rigthPress) {
  20.          // Mover div a la izquierda
  21.          console.log('izquierda')
  22.        }
  23.      
  24.      }, intervalVelocity)
  25.      
  26.      document.onkeydown = function(e) {
  27.        if(e.keyCode == 37) {
  28.          // activar movimiento a la izquierda
  29.          leftPress = true;
  30.         }
  31.         if(e.keyCode == 39) {
  32.           // activar movimiento a la derecha
  33.           rigthPress = true;
  34.         }
  35.       }
  36.      
  37.       document.onkeyup = function(e) {
  38.         if(e.keyCode == 37) {
  39.           // desactivar movimiento a la izquierda
  40.           leftPress = false;
  41.         }
  42.         if(e.keyCode == 39) {
  43.           // desactivar movimiento a la derecha
  44.           rigthPress = false;
  45.         }
  46.       }
  47.     }
  48.   </script>
  49. </head>
  50.  
  51. </body>
  52. </html>
__________________
No intentes superar a nadie, ¡supérate a ti mismo!
  #4 (permalink)  
Antiguo 20/03/2014, 08:05
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: Mover un div con .onkeypress

Esta solución se parece mas a lo que intentabas.

Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <title>Documento sin t&iacute;tulo</title>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  4. </head>
  5. <body onkeypress="desplazar(event)">
  6. <div id="objeto" style="height:100px; width:100px; background-color:black; position:absolute; top:10%;color:white"></div>
  7. <script language="JavaScript" type="text/JavaScript">
  8. document.getElementById("objeto").style.left="5%";
  9. document.getElementById("objeto").innerHTML=document.getElementById("objeto").style.left;
  10. function desplazar(event){
  11. var x = document.getElementById("objeto").style.left;
  12. /*IZQUIERDA*/
  13. if(event.keyCode == 37){
  14.         var xx=parseInt(x.replace("%",""))-1;
  15.     var direccion="IZQUIERDA";
  16. }
  17. //alert(document.getElementById("objeto").style.left);
  18. /*DERECHA*/
  19. if(event.keyCode == 39){
  20.         var xx=parseInt(x.replace("%",""))+1;
  21.     var direccion="DERECHA";
  22. }
  23. document.getElementById("objeto").style.left=xx+"%";
  24. document.getElementById("objeto").innerHTML=document.getElementById("objeto").style.left+"<br />"+direccion;
  25. }
  26. </html>
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 20/03/2014 a las 08:17
  #5 (permalink)  
Antiguo 20/03/2014, 15:10
Avatar de blancoarnau  
Fecha de Ingreso: junio-2013
Mensajes: 119
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Mover un div con .onkeypress

Entendí el código pero después lo ejecute y no funciona... ¿Hay algún error o solo funciona con determinados navegadores?
  #6 (permalink)  
Antiguo 20/03/2014, 17:17
Avatar de Ito79  
Fecha de Ingreso: diciembre-2013
Mensajes: 71
Antigüedad: 11 años
Puntos: 18
Respuesta: Mover un div con .onkeypress

Hola,

No funciona porque el evento onkeypress no se dispara con las teclas de las flechas, si cambias en la línea del body el onkeypress por onkeydown, ya te funcionará ;)

Código:
<body onkeydown="desplazar(event)">
Sólo he probado en chrome, pero he leído que onkeypress puede funcionar en algunos navegadores y que onkeydown funciona en todos (o la mayoría)

Un saludo
// Ito
  #7 (permalink)  
Antiguo 21/03/2014, 00:56
Avatar de blancoarnau  
Fecha de Ingreso: junio-2013
Mensajes: 119
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Mover un div con .onkeypress

Muchas gracias a todos ^^
  #8 (permalink)  
Antiguo 21/03/2014, 01:36
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: Mover un div con .onkeypress

Cita:
Sólo he probado en chrome, pero he leído que onkeypress puede funcionar en algunos navegadores y que onkeydown funciona en todos (o la mayoría)
En firefox funcionaba.....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: funcion, html, onkeypress
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 02:31.