Javascript-在写下文本区域之前更改输入字母

Javascript-在写下文本区域之前更改输入字母,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试用jQuery制作一个虚拟键盘 当我在给定的文本区域中按下'a'时,假设应该改为写入'z' 在textarea中,我发现键入字母的整个步骤由 keyDown事件→ 按键事件→ 在文本区键入的字母→ 键控事件 在我的代码中,我在按键事件中检测到字母,在该事件中,如果字母是'a',我使用.val()方法在文本区域中添加'z' 如果在文本区域中有初始字符串hello,则在keyPress事件之后,我们有helloz。然后,在keyUp事件发生之前,textarea变成helloza。因此,我

我正在尝试用jQuery制作一个虚拟键盘

当我在给定的文本区域中按下
'a'
时,假设应该改为写入
'z'

在textarea中,我发现键入字母的整个步骤由

keyDown事件→ 按键事件→ 在文本区键入的字母→ 键控事件

在我的代码中,我在按键事件中检测到字母,在该事件中,如果字母是
'a'
,我使用
.val()
方法在文本区域中添加
'z'

如果在文本区域中有初始字符串
hello
,则在
keyPress事件
之后,我们有
helloz
。然后,在
keyUp事件发生之前,textarea变成
helloza
。因此,我删除了
keyUp事件中的最后一个字母
'a'

这看起来很棒,而且效果也很好。但是,问题是时间延迟

因为我上面写的步骤需要一秒钟,
'a'
在文本区域出现了很长时间

但中的虚拟键盘不显示原始字母


如何执行此操作?

尝试在按键事件处理程序中调用event.preventDefault()。

尝试在按键事件处理程序中调用event.preventDefault()。

如前所述,您可以使用
preventDefault()
防止它显示在文本框中,然后,如果您正在寻找获取按键字符(而不是字符代码)的实用方法,您可以执行以下操作:

$('#txt').on('keypress', function (e) {
    var pressedKey = String.fromCharCode(e.keyCode);
    var $txt = $('#txt');
    e.preventDefault();
    if (pressedKey == 'a') {
        $txt.val($txt.val() + 'z');
     }
});

这里是演示:

如前所述,您可以使用
preventDefault()
来防止它显示在文本框中,如果您正在寻找获取按键字符(而不是字符代码)的实用方法,则可以执行以下操作:

$('#txt').on('keypress', function (e) {
    var pressedKey = String.fromCharCode(e.keyCode);
    var $txt = $('#txt');
    e.preventDefault();
    if (pressedKey == 'a') {
        $txt.val($txt.val() + 'z');
     }
});

这里是演示:

@tymeJV我可以得到你的更详细的评论吗?啊-nvm,刚刚尝试了一下,但没有成功..抱歉尝试调用
事件处理程序中的
事件.preventDefault()
。@sholanozie哇,成功了!谢谢@如果你上传这个评论作为答案,我会选择你的答案@tymeJV我能更详细地了解你的评论吗?啊-nvm,刚刚尝试了一下,但没有成功..抱歉尝试调用
事件处理程序中的
事件.preventDefault()
。@sholanozie哇,它很有效!谢谢@如果你上传这个评论作为答案,我会选择你的答案!