javascript - 我如何在 Firefox 中检测回车键?
我能够在 Internet Explorer 10、Chromium 和 Opera 中成功检测到 Enter 键,但在 Firefox 中无法检测到。
我在这里找到了一些页面,不过它们在 Firefox 中也无法使用。我是不是哪里做错了?
TypeScript:
function HandleKeyPress(e) {
var key = e.keyCode || e.which;
if (key == 13) {
// We got this.
var textbox = <HTMLInputElement>document.getElementById("tbox");
sayHello(textbox.value);
}
}
生成的 JavaScript(相同):
function HandleKeyPress(e) {
var key = e.keyCode || e.which;
if(key == 13) {
var textbox = document.getElementById("tbox");
sayHello(textbox.value);
}
}
HTML :
<input type="text" value="dfgdfgdfg" id="tbox" onkeypress="HandleKeyPress(event)" />
我不能使用任何外部库,我必须用纯 JavaScript(或可以编译为纯 JS 的语言)来完成这个。
更新:
我刚刚安装了 Firebug,在控制台面板中我注意到(就在按下文本框中的 Enter 键之后):
http://localhost:1058/Default.cshtml?someValue=dfgdfgdfgkjkhj
<p>You said: dfgdfgdfgkjkhj</p>
请看下面的图片:
注意 页面本身并没有将 response 段的值更新为文本框中输入的内容,但是,Firebug 确实显示它已成功提交。
现在,由于这段代码在其他所有浏览器上都可以运行(IE、Chrome/Canary 以及 <、Opera、Safari),我的问题是,也许 Firefox 确实检测到了按键事件,但之后那部分没有工作吗?
答案#1
你应该将 onkeypress 改为 onkeydown,因为在某些实现中,onkeypress 只会在可打印字符上触发。
你现有的代码应该可以与 onkeydown 一起使用。
答案#2
试试这个:
<input type="text" value="dfgdfgdfg" id="tbox" onkeypress="HandleKeyPress(event)" />
并将函数 HandleKeyPress 定义为:
function HandleKeyPress(evt){
var key = evt.which || evt.charCode || evt.keyCode || 0;
if (key == 13) ...
}
