Перехватите клавишу ввода через кросс-браузер, мое решение не работает - PullRequest
3 голосов
/ 01 мая 2011

У меня есть то, что я думал, было кросс-браузерным решением для ввода ключа ввода в скрипт чата, который я делаю, вот оно:

    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);

Я получил это от кого-то другого, так что, возможно, оно устарело? В любом случае, атрибут id формы, как вы можете видеть, является chatEnter. Я также попытался использовать document.forms [0] .submit, и это тоже не сработало. Он отлично работает в FF, но не повезло в IE8 64 бит (это единственные две, которые я тестировал до сих пор.) Что я здесь не так делаю? Спасибо за любую помощь.

Ответы [ 2 ]

11 голосов
/ 01 мая 2011

попробуйте использовать>

$(document).keypress(function(e) {
    if (e.which == "13") { 
        //enter pressed 
    }       
});

курса, для этого вам потребуется jQuery.Не может быть лучшего кросс-браузерного решения, чем использование проверенной и широко используемой кросс-браузерной среды.

8 голосов
/ 01 мая 2011

Вы правы, пример, который вы получили, сильно устарел и содержит код для работы с Netscape 4, который неактуален около десяти лет.

Не используйте jQuery только для этого. Это не сложно, если вы хотите захватить только клавишу Enter :

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