Jquery keydown函数

时间:2013-08-30 01:41:29

标签: javascript jquery

我正在尝试让span元素中的文本根据使用Jquery中的keydown函数按下的键进行更改。

脚本运行正常,直到我的所有if语句。

http://jsfiddle.net/rAhkc/1/

我的脚本示例:

$(document).ready(pressed);
function pressed(){
    $('html').keydown(function (e) {
        var a = 65;var b = 66;var c = 67;
        if (e.keyCode == a){
            $('span').text('a');
            console.log('Key Pressed: a');
        }else if(e.keyCode == b){
            $('span').text('b');
            console.log('Key Pressed: b');
        }else if(e.keyCode == c){
            $('span').text('c');
            console.log('Key Pressed: c');
        }
    });
}

我有2个不同的控制台日志,按下按键时应该报告。一个按下任何一个按键,一个按下特定按键时(当前只有a,b和c)。

有人可以告诉我我做错了什么以及它为什么不起作用?

4 个答案:

答案 0 :(得分:4)

您通过设置e来覆盖keycode

制作var ee = 69;或其他东西。

Here is a DEMO

答案 1 :(得分:3)

正如Rooster / FaceOfJock所说,你正在覆盖e,这就是为什么不起作用。

我在下面做了一些更改,只是为了提高理解力并使代码更小。

// JavaScript Document
$(document).ready(pressed);
console.log('keyPressed.js is running');
function pressed(){
    console.log('pressed script began');    
    $('html').keydown(function (e) {
        console.log(e.keyCode);

        var codes = {
            q:81, w:87, e:69, r:82, t:84, y:89, u:85, i:73, o:79, 
            p:80, a:65, s:83, d:68, f:70, g:71, h:72, j:74, k:75, 
            l:76, z:90, x:88, c:67, v:86, b:66, n:78, m:77, space:32, 
            backspace:8, tab:9, caps:20, enter:13, shift:16, ctrl:17, 
            alt:18
        };

        $.each(codes,function(key,code){
            if(e.keyCode == code){
                $('span').text(key);
                console.log('Key: ' + key);
            }
        });
    });
}

希望这有帮助。

答案 2 :(得分:1)

你的问题是你凌驾于e的意义上。将名称切换为evt或其他内容。

此外,您应该使用switch语句而不是所有if个语句。

答案 3 :(得分:-1)

$(function(){
    $(document).keyup(function(e){
        var a = 65;
        var b = 66;
        var c = 67;

        switch(e.which){
            case a:
                console.log('you pressed a')
            break;

            case b:
                console.log('you pressed b')
            break;

            case c:
                console.log('you pressed c')
            break;
        }
    })
})

这里是jsfiddle。运行inspect元素查看结果。

从javascript事件中解雇时,e.keyCode对我来说很麻烦。它与浏览器不一致。 e.which工作得更好。我还认为转换声明更合适。

http://jsfiddle.net/PnjME/