我最近一直在做一些 JS 并遇到这个愚蠢的错误,我可以使用 e.keyCode
检测返回键并检查 keyCode == 13
但是当我尝试检查 38
(向上箭头)它永远不会触发。有什么帮助吗?
HTML:
<input type="text" id="TxtMessage"
placeholder="Message" onKeyPress="SendMsg(event)" >
Javascript:
function SendMsg(e)
{
var message = document.getElementById("TxtMessage");
if(e.keyCode ==13)
{
var json = {"message": message.value};
json = JSON.stringify(json);
ws.send(json);
PreviousMessage = message.value;
message.value = "";
message.focus();
}
else if(e.keyCode == 38)
{
message.value = PreviousMessage;
}
}
编辑:通过将 onKeyPress 更改为 onKeyDown 来修复...奇怪。
最佳答案
替换您的以下行:
if(e.keyCode !=13) return;
if(e.keyCode == 38) { message.value = PreviousMessage; return; }
对于这个:
var charCode = typeof e.which == "number" ? e.which : e.keyCode;
if(charCode == 38) { message.value = PreviousMessage; return; }
if(charCode !=13) return;
更新:
我上面的代码在按键事件中使用时仍然不起作用,因为正确的解决方案是使用keydown或keyup事件来捕捉箭头键。请参阅此处以获得增强的答案 https://stackoverflow.com/a/2218915/352672另见此处 working jsfiddle使用 keyup 事件。
关于Javascript向上箭头按键不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14674414/