Me gustaría agregar un carácter acentuado, á, siempre que usemos una combinación de teclas de Alt + 'a'. Luego lo mismo para é con la combinación de Alt + 'e'.
Traté de lograrlo con esta función, sin embargo, los resultados están lejos de ser perfectos:
$('input').bind('keypress keydown keyup', function(event) { if (event.altKey && event.key == 'a') { event.preventDefault(); this.value += 'á'; } });Cuando uso esta combinación de teclas, no obtengo el resultado deseado, sino que obtengo el polaco "±".
Sin embargo, cuando solo uso event.key == 'a' sin event.aktKey, funciona y agrega valor a la entrada.
¿Podría explicar por qué sucede esto y proporcionar una solución? Gracias.
No hay ninguna razón dentro de su código o jquery por la que obtenga "±".
Pero de todos modos, ¿por qué vincular los tres eventos: keypress , keydown y keyup ? Eso dará como resultado que se agreguen varios caracteres con una sola pulsación de tecla.
Lo siguiente parece funcionar bien.
$('input').on('keydown', function (event) { if (event.altKey && event.key == 'a') { event.preventDefault(); this.value += 'á'; } }); console.log('\xE1' === 'á'); // true <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input></input>