Foros del Web » Programando para Internet » Javascript »

Pulsar intro automáticamente tras 8 segundos

Estas en el tema de Pulsar intro automáticamente tras 8 segundos en el foro de Javascript en Foros del Web. Hola, estoy intentando hacer algo un poco raro. Tengo un input=text (una caja de texto) y lo que pretendo es que el usuario introduzca un ...
  #1 (permalink)  
Antiguo 31/05/2014, 07:36
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años, 8 meses
Puntos: 15
Pulsar intro automáticamente tras 8 segundos

Hola,

estoy intentando hacer algo un poco raro.

Tengo un input=text (una caja de texto) y lo que pretendo es que el usuario introduzca un texto y pulse intro. Luego le llevará a un sitio, pero eso ya es otra historia.

La idea es que sea lo más sencillo posible, y si para de escribir durante 8 segundos en la caja de texto pero no pulsa intro, automáticamente el sistema pulse intro "por él".

Alguna idea?
  #2 (permalink)  
Antiguo 31/05/2014, 08:03
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Pulsar intro automáticamente tras 8 segundos

Eso seria:

- Crear un timer asociado al evento onKeyup() a una funcion anonima que concatene "\n" en ese TEXTAREA

Código Javascript:
Ver original
  1. <html>
  2. <head>
  3. <title>No molestar!</title>
  4. <style>
  5.     body {background-color: #000;} 
  6.    
  7.     h1 {color: white;}
  8.  
  9.    textarea#no_stop
  10.    {
  11.         width:350px;
  12.         height:350px;
  13.         background-color: #eee;    
  14.         color: white;      
  15.         border: red 5   px;
  16.         position:relative;
  17.    }
  18. </style>
  19. </head>
  20. <body>
  21. <h1> No te detengas!</h1>
  22.  
  23. <TEXTAREA id="no_stop"></TEXTAREA>
  24.  
  25. <script>
  26.        
  27.     window.onload = function()
  28.     {  
  29.         tx = document.getElementById('no_stop');   
  30.  
  31.         miHandler = function()
  32.         {
  33.             setTimeout(function(){
  34.                 console.log('Pasaron 8 seg y nada! perezoso!');
  35.                 tx.value += '\n'
  36.             },8000);   
  37.         }; 
  38.            
  39.                
  40.         tx.addEventListener ('keyup',miHandler,false);         
  41.        
  42.     }
  43.        
  44. </script>
  45. </body>
  46. </html>
__________________
Salu2!

Última edición por Italico76; 31/05/2014 a las 08:19
  #3 (permalink)  
Antiguo 31/05/2014, 12:20
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Pulsar intro automáticamente tras 8 segundos

Otra manera:

Código Javascript:
Ver original
  1. var input = document.getElementById("id_input"),
  2.     uri = "http://www.google.com",
  3.     intervalo;
  4.  
  5. input.addEventListener("keyup", function(e){
  6.     if (e.keyCode == 13)
  7.         window.location = uri;
  8.     else{
  9.         clearInterval(intervalo);
  10.         intervalo = setInterval(function(){
  11.             window.location = uri;
  12.         }, 8000);
  13.     }
  14. }, false);

Cuando el usuario empiece a escribir y no pulse la tecla ENTER, limpiamos el intervalo de tiempo (exista o no) que debe de transcurrir para hacer la redirección y lo establecemos o volvemos a establecer, es decir, al inicio no habrá intervalo porque no se está escribiendo (lo cual me parece que es lo más sensato), luego, el usuario empieza a escribir y el tiempo empieza a contar hasta que el usuario nuevamente escriba, en ese momento, se corta la cuenta y se reinicia, pero si pulsa la tecla ENTER, se realiza la redirección. Lo mismo sucederá si no se pulsa tecla alguna durante 8000 milisegundos que equivalen a 8 segundos.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 31/05/2014 a las 20:35 Razón: Corrección
  #4 (permalink)  
Antiguo 01/06/2014, 04:06
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años, 8 meses
Puntos: 15
Respuesta: Pulsar intro automáticamente tras 8 segundos

Alexis88 la tuya me funciona pero creo que olvidé un detalle.

Al darle al intro tiene que ir a una página del tipo:

www.miweb.com/search/?q=contenido_del_input_text

He intentado con:

Código Javascript:
Ver original
  1. uri = "search/?q="+input.value
pero nada... ;(

(no lo he dicho pero el input text está en un formulario)

Última edición por humanista; 01/06/2014 a las 04:16
  #5 (permalink)  
Antiguo 01/06/2014, 04:21
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Pulsar intro automáticamente tras 8 segundos

¿Y si lo intentas así?

Código Javascript:
Ver original
  1. var input = document.getElementById("id_input"),
  2.     uri = "http://www.miweb.com/search/?q=",
  3.     intervalo;
  4.  
  5. input.addEventListener("keyup", function(e){
  6.     if (e.keyCode == 13)
  7.         window.location = uri + this.value;
  8.     else{
  9.         clearInterval(intervalo);
  10.         intervalo = setInterval(function(){
  11.             window.location = uri + this.value;
  12.         }, 8000);
  13.     }
  14. }, false);

Pero primero asegúrate de que esa es la forma que toma la URI luego de hacer una búsqueda, es decir, si http://www.miweb.com/search/?q=dato produce un resultado válido. Por ejemplo, al hacer una búsqueda en Google, la URI toma esta forma: https://www.google.com/#q=dato.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 01/06/2014, 04:34
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años, 8 meses
Puntos: 15
Respuesta: Pulsar intro automáticamente tras 8 segundos

Lo he comprobado pero nada, me da valor "undefinied"...
  #7 (permalink)  
Antiguo 01/06/2014, 04:38
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Pulsar intro automáticamente tras 8 segundos

¿Qué pasa si en la barra de direcciones intentas acceder a algo como http://www.miweb.com/search/?q=dato? Si produce un resultado válido (ojo con esto), entonces el problema está en la función, caso contrario, en la URI.

Sigo creyendo que la URI que proporcionas, no tiene un formato válido. Quizá sea como en el buscador de Google, que en lugar del signo de interrogación ?, hay un hash #, aunque esa URI tiene pinta de haber sido formateada desde el .htaccess, tomando la forma de una URI amigable.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #8 (permalink)  
Antiguo 01/06/2014, 04:46
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años, 8 meses
Puntos: 15
Respuesta: Pulsar intro automáticamente tras 8 segundos

Sï que produce un resultado válido, lo he comprobado. De hecho cambio this.value por un término de búsqueda cualquiera ("ordenador" por ejemplo) y la función va bien.


Pongo ? sólo porque obvio el index.php
  #9 (permalink)  
Antiguo 01/06/2014, 04:52
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años, 8 meses
Puntos: 15
Respuesta: Pulsar intro automáticamente tras 8 segundos

Lo tengo!!!

Basta con cambiar uri + this.value por uri + input.value

gracias Alexis88, me has ayudado mucho!!!
  #10 (permalink)  
Antiguo 01/06/2014, 04:56
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Pulsar intro automáticamente tras 8 segundos

Mira este pequeño ejemplo que hice con el mismo código, aquí está el código fuente. Compáralo con lo que hiciste y corrige lo que no concuerde. Me voy a dormir, es muy tarde por acá y muero de sueño. Realiza la comparación con paciencia para que puedas hallar el desperfecto.

Saludos

Edito: ¡Enhorabuena!
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #11 (permalink)  
Antiguo 01/06/2014, 05:47
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Pulsar intro automáticamente tras 8 segundos

@humanista : se que mi solucion tenia errores (estoy aprendiendo JS) ... pero de ahi a ignorarla por completo...... menos mal eres "humanista", personas como vos son las que hace que uno se replantee para que estamos aca

@Alexis88:
__________________
Salu2!
  #12 (permalink)  
Antiguo 03/06/2014, 00:21
Avatar de humanista  
Fecha de Ingreso: abril-2005
Mensajes: 878
Antigüedad: 19 años, 8 meses
Puntos: 15
Respuesta: Pulsar intro automáticamente tras 8 segundos

Italico76 tienes razón. Probé tu script y no me funcionaba. Iba con mucha prisa y se me pasó responderte. Mil disculpas.

Etiquetas: input, intro, pulsar, segundos, tras
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 00:08.