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