捕获输入密钥跨浏览器,我的解决方案无法正常工作

lin*_*982 3 javascript enter cross-browser event-handling

我有我认为是一个跨浏览器的解决方案来捕获我正在制作的聊天脚本中的回车键,这里是:

    nn=(document.layers)?true:false;
ie=(document.all)?true:false;
function keyDown(e) {
    var evt=(e)?e:(window.event)?window.event:null;
    if(evt){
        var key=(evt.charCode)?evt.charCode: ((evt.keyCode)?evt.keyCode:((evt.which)?evt.which:0));
        if(key=="13") document.getElementById('chatEnter').submit();
        }
    }
document.onkeydown=keyDown;
if(nn) document.captureEvents(Event.KEYDOWN);
Run Code Online (Sandbox Code Playgroud)

我是从其他人那里得到的,所以也许它已经过时了?无论如何,你可以看到form id属性是chatEnter.我也尝试过使用document.forms [0] .submit,但也没用.它在FF中运行得很好但IE8 64位没有运气(这是迄今为止我测试过的唯一两个.)我在这里做错了什么?谢谢你的帮助.

nee*_*ebz 11

尝试使用>

$(document).keypress(function(e) {
    if (e.which == "13") { 
        //enter pressed 
    }       
});
Run Code Online (Sandbox Code Playgroud)

当然,你需要jQuery.没有比使用经过测试和广泛使用的跨浏览器框架更好的跨浏览器解决方案.

  • 为这一个解决方案添加jQuery似乎相当多的开销.但是,如果我没有得到任何答案,那可能只需要采取的路线.不过,我认为,如果jQuery可以在一个框架中完成它,那么我可以在没有框架的情况下完成它.他们不得不对它进行编码. (2认同)

Tim*_*own 8

你是对的,你得到的例子是大量过时的,并包含处理Netscape 4的代码,这与大约十年无关.

不要仅仅为此使用jQuery.这并不难,如果它只是Enter你想捕获的关键:

document.onkeydown = function(e) {
    e = e || window.event;
    if (e.keyCode == 13) {
        document.getElementById("chatEnter").submit();
    }
};
Run Code Online (Sandbox Code Playgroud)