我能够成功检测到Internet Explorer 10,Chromium和Opera中的 Enter 键,但不能用于Firefox。
我在这里找到了几页,但它们在Firefox中也不起作用。我做错了什么,这里?
打字稿:
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并且在Consolw窗格中我注意到了(在文本字段上按 Enter jey之后:
http://localhost:1058/Default.cshtml?someValue=dfgdfgdfgkjkhj
<p>You said: dfgdfgdfgkjkhj</p>
见下图:
注意页面本身尚未将response
段落的值更新为文本框中输入的内容,但,Firebug确实说明了它已成功发布。
现在,由于此代码适用于所有其他浏览器(IE,Chrome / Canary和&lt;,Opera,Safari),我的问题是,可能Firefox 检测到关键事件,但部分那不起作用是在那之后?
答案 0 :(得分:5)
您应该将onkeypress
更改为onkeydown
,因为onkeypress
仅在某些实现中触发可打印字符。
您现有的代码应与onkeydown
一起使用。
答案 1 :(得分: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) ...
}
答案 2 :(得分:1)
你可以通过使用这样的jQuery来实现
$(".input").keyup(function (e) {
if (e.keyCode == 13) {
// Whatever
}
});