Cita:
Iniciado por furoya (Noo me deejan doooormiir!)
Apagá la PC....
Ahora en serio, si te interesa, me sobran un par de pantuflas de corderito, de esas que ya no se hacen, si te sirven, chiflá que te las hago llegar...
En otro orden de cosas, anteayer estuve viendo este post, cuando aún no había respuestas, después de algún par de
esperimentos, (no merecen siquiera llamarse "experimentos"), y viendo que todos, tarde o temprano, hacían agua... decidí no postear, pero como veo que, los aventureros/as de siempre del Js, arrimaron sus devaneos, aquí va el mio...
Código HTML:
Ver original<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <script type="text/javascript"> //<![CDATA[
var texto = "";
var tvacio = "";
var i= 0;
var e;
function capturarTecla(e) {
e = (e) ? e : ((event) ? event : null);
var version = (e.target) ? e.target : ((e.srcElement)?e.srcElement : null );
var teclaNum = String.fromCharCode(e.keyCode);
var tArea = document.getElementById('contenido');
texto += teclaNum;
var re = new RegExp(teclaNum,"gi");
if(i >2){
alert('Teclas repetidas');
//document.getElementById('foco').focus(); // variante
var re2 = new RegExp(texto,"i");
var re3 = tArea.value.replace(re2,'');
tArea.value = re3;
i = 0;
texto=tvacio;
}
i++;
}
function resetear(){
i = 0;
texto=tvacio;
var teclaNum = "";
}
//]]>
<textarea rows="8" cols="30" id="contenido" onkeydown="capturarTecla(event);" onkeyup="resetear();"></textarea> <input type="text" id="foco" style="width: 1px; height: 1px; border: none; color: transparent; background-color: transparent;" /></div>
Observaciones:
la detección de caracteres repetidos y consecutivos (mas de 2 en el ejemplo) se produce en todos los navegadores...
Si quito el alert, el reemplazo de la secuencia repetida no se produce.
En IE el reemplazo es completamente irregular en su comportamiento...
En Firefox, si deseamos borrar texto con backspace, no detecta la repetición pero tras mantener la tecla apretada por 3 caracteres, me manda a la página previa del navegador, cosa que no hacen IE ni Chrome.
La variante de quitar el alert y al detectarse la repetición mandar el foco a un inpput invisible, es interesante....
Y no sigo porque carece de sentido, con que el usuario en lugar de mantener la tecla apretada, se dedique a apretar/soltar/apretar/soltar, el usuario va a burlar cualquier obstáculo y va a poooooooooooooooooooooooooder escriiiiiiiiiiiiiiiiiiiiiiibir lo queeeeeeeeee se le ocuuuuuuuurra.
Saludos