我正在为texarea做这件事.当用户按下时应该调用一个函数Enter,但是当按下Shift+ 时不应该执行任何操作Enter.
我尝试在这里模拟许多IM通信器具有的功能:发送消息,Enter但也使用Shift+ 添加多行Enter.
我有以下nodejs程序
import readline from 'readline'
readline.createInterface({input: process.stdin, output: process.stdout}).prompt()
process.stdin.on('keypress', (letter, key) => console.log({letter: letter, key: key}))
Run Code Online (Sandbox Code Playgroud)
这在大多数情况下都有效,例如如果我按SHIFT+X
,它会正确输出key.shift === True
:
{
letter: 'X',
key: { sequence: 'X', name: 'x', ctrl: false, meta: false, shift: true }
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我按SHIFT+ENTER
,则key.shift
永远不会true
:
{
letter: '\r',
key: {sequence: '\r', name: 'return', ctrl: false, meta: false, shift: false}
}
Run Code Online (Sandbox Code Playgroud)
为什么?如何检测在 Node.js 中的SHIFT+ENTER
使用readline
?
我想做什么?我正在构建一个终端提示应用程序,因此该readline
模块非常方便,因为它带有自动完成器、历史记录、分页、提示前缀等。但是,我也希望能够输入多行提示。
我有一个检测最大长度的功能.但问题是当最大长度达到Ctrl + A组合时不起作用.如何通过javascript检测Ctrl + A组合.
这是我的maxlength代码.
if (event.keyCode==8 || event.keyCode==9 || event.keyCode==37 || event.keyCode==39 ){
return true;
} else {
if((t.length)>=50) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud) 我希望能够在按键上触发%.到目前为止,我有这个:
$(iframeDocument).find('body').on('keydown', function(event) {
if (event.which == 53) {
alert("% pressed");
}
});
Run Code Online (Sandbox Code Playgroud)
但是,当我按下"5"时它也会触发.我如何区分这两者?
许多功能是否已被弃用或不是KeyboardEvent对象类的当前标准的一部分。只是想知道为什么每当我按shift或esc。我的 Chrome 或 Mozilla 控制台上没有显示任何键。
document.addEventListener("keypress", (e) => {
console.log(e.keyCode);
console.log(e.key);
console.log(e.code);
console.log(e.shiftKey);
});
Run Code Online (Sandbox Code Playgroud)
使用的浏览器控制台
https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent