2013-04-08 77 views
1

即时通讯设法制作一个简单的应用程序,当在用户键盘上按下某个键时,图像将与该字母相对应。我想这样做整个字母表(a,b,c ...)使用jQuery按下按钮时显示图像

如果a被按下a.jpg显示在我的页面上,如果r被按下r.jpg会出现等等。

我打算用一个巨大的if else语句列表来做这件事,但我确定必须有另一种方式吗?

var ctrlPressed = false; 
$(window).keydown(function(evt) { 
    if (evt.which == 17) { // ctrl 
    ctrlPressed = true; 
     alert('sdf'); 
    } 
}) 
+0

为什么你对'ctrl'重要的例子,但对A-Z键的问题?你问如何映射f.ex'ctrl + a'? – David 2013-04-08 09:00:23

+0

而不是获得'keyCode',我建议你得到它的价值,并结合像'key_value +“.jpg”'后缀,它更简单 – 2013-04-08 09:01:20

回答

0

如何图像引用数组,其中索引映射到evt.which值

var images=[]; 
images[64]='a.jpg'; 
images[65]='b.jpg'; 
images[66]='c.jpg'; 
//...etc... 

$(window).keydown(function(evt) { 
    var image=images[evt.which]' 
    if(image){ 
     alert(image); 
    } 
}) 

有点难看,可能不是最有效的,但易于遵循:)

0

我会得到关键值,然后再匹配一次az。尝试是这样的:

$(window).keydown(function(e) { 
    var key = String.fromCharCode(e.which).toLowerCase(); 
    if(/[a-z]/i.test(key)) { 
     alert(key+'.jpg'); 
    } 
}); 

演示:http://jsfiddle.net/BMZaF/

0

似乎event.which为字母对应的ASCII值。因此,您可以执行以下操作:

$(window).keydown(function(evt) { 
    if (evt.which >= 65 && evt.which <= 90){ 
    $('img[src="' + String.fromCharCode(evt.which).toLowerCase() + '.jpg"]').show();   
    } 
}); 
0

您应该使用字母键名命名图像文件。

例如输入的字母“a”必须命名为“97.jpg”。

所以你可以像这样从你的jQuery调用它:

$(document).ready(function(){ 
    $("#input").bind('keypress', function (e) { 
     console.log(e.which); //or alert(e.which); 
     $("#Image").attr("src", e.which + ".jpg"); 
    }); 
});