Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/05/2012, 07:37
furoya
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 6 meses
Puntos: 317
Respuesta: Restringir cantidad de carácteres de tecla presionada de forma sostenida

Sí, pero no sé si vale la pena crear un escript que haga eso.
Estás pidiendo que detecte el tiempo que el usuario mantiene presionada una tecla, y que como resultado cambie la cantidad de caracteres que terminan apareciendo en el formulario.

Te pongo un caso : si tengo configurado en el sistema operativo un retraso de repetición corto y una velocidad de repetición rápida, en 5 segundos puedo escribir unos 200 caracteres seguidos (por poner un número). Si suelto la tecla en 5 segundos con 1 décima, el escript me deja un solo caracter, pero si levanto el dedo en 4 segundos con 9 décimas me deja 190. Por otro lado, si configuro el retraso como largo y la velocidad como lenta, la cantidad de caracteres no va a pasar de 20 en 5 segundos, y 18 si levanto la tecla antes.

Como ya sabes, javascript no ve la configuración de los sistemas operativos, sólo los eventos de periféricos (como el teclado), así que con tu método un onkeydown de 4.9sec puede terminar en una cadena de entre 18 y 180 caracteres.

¿Te sirve?

Sigo insistiendo : estamos en un Foro de Programación. Hay que plantear los mensajes de manera que la pregunta no deje lugar a segundas interpretaciones para que la respuesta sea exacta; pero esa pregunta debe ser coherente y ajustarse a lo que saben que necesitan, no mandar cualquier cosa; porque si alguien se toma el trabajo de crearte semejante programa (contando tiempos y caracteres escritos) para que después digas "ah, no, yo quería que nada más no me repitiera por dejarse apretado el botón" o "ah, no, yo quería que no apareciesen caracteres repetidos y seguidos" ... entonces lo menos que tenemos que hacer es banearte.

En IE funcionaba esto

Código:
<input onkeydown="if(event.repeat==true){alert('Ingresó 2 caracteres repetidos.'); return false}">
En los demás, no lo probé.

Lo del tiempo relacionado con la cadena te lo debo. No me voy a poner a inventar algo así, que por otro lado debe ser muy fácil con onkeydown onkeyup setTimeout() clearTimeout() y expresiones regulares; o cualquier otro método.

Saludos
furoya.