Hola, hace tiempo que no escribo, pero cada vez tengo menos tiempo. El
caso es que el otro día me tropece con un pequeño problema en una
aplicación ASP.NET y como me pareció interesante la solución he decidio
hacer un pequeño post sobre el tema. El problema es capturar un evento
de teclado en el lado del cliente cuando un TextBox tiene el foco, para
por ejemplo, escribir algo. O sea, la caja de texto tiene el foco,
pulso F9 y en el texto aparece inmediatamente una palabra predefinida.
La solución es bastante simple.
En el Page_Load ponemos este código
txtPregunta.Attributes.Add("onKeyDown", "return Replace();")
Con esto, asociamos al evento del cliente onKeyDown la función
javascript Replace();. El código de esta función los escribiremos en el
codigo html de la página en la sección head de la manera siguiente
<script>
function Replace()
{
if (event.keyCode == 120){ /* F9 */
document.getElementById("txtPregunta").value = 'Prueba F9';
return false;
}
if (event.keyCode == 121) /* F10 */{
document.getElementById("txtPregunta").value = 'Prueba F10';
return false;
}
return true;
}
</script>
Con este sencillo código, capturamos el evento y escribimos el texto
que queramos en el TextBox. Me queda averiguar si se puede evitar
propagando el evento, porque si capturamos F1, despues de nuestro
código el navegador mostrará la ayuda.
Espero que les sea útil.