2012-03-18 135 views
0

這是問題的問題:我需要截取的字符@,但與jQuery和keydown事件我只得到了17碼keydown事件:與「@」

我怎樣才能獲得真正的代碼(192 )與property event.altKey = true

這是我的代碼。它連接到輸入字段:

$(this).keydown(function(e) { 
    var keycode = (e.keyCode ? e.keyCode : e.which); 

    alert(e.keyCode + " - " + e.which + " - alt:" + e.altKey + " - shift:" + e.shiftKey + " - ctrl:" + e.ctrlKey); 
}); 

此警報始終顯示17(ctrl/alt)。我該如何解決這個問題?

+0

什麼是你想既成事實?這是一個輸入字段嗎? – elclanrs 2012-03-18 23:59:58

+0

因爲您在'keydown'上發出警報(阻止),因此您不會註冊第二個密鑰。 – Ben 2012-03-19 00:00:42

+0

是的,它連接到輸入字段。但我不知道如何攔截我需要的密鑰'@'... – fpiliego 2012-03-19 00:56:10

回答

0

這爲我工作:http://jsbin.com/ohucuj/edit#preview

$(function() { 
    $("#thingToTest").keydown(function(e) { 
    var keycode = (e.keyCode ? e.keyCode : e.which); 
    if (e.shiftKey && e.which == 50) { 
     $("#message").html("You pressed SHIFT+2 or @ !!!"); 
    }else{ 
     $("#message").html(e.keyCode + " - " + e.which + " - alt:" + e.altKey + " - shift:" + e.shiftKey + " - ctrl:" + e.ctrlKey); 
    } 
    }); 
}); 

只是用於測試的移位鍵和鍵。

+0

我在mac上,而我使用alt + 2. – joakimdahlstrom 2012-03-19 01:26:30

+0

我測試了與我的mac,它的工作原理是一樣的。猜猜我不使用ALT – shanabus 2012-03-19 02:05:10

0

我不知道是什麼192號,但我發現@爲NR 64

您可以捕獲與按鍵事件一樣,

$("#textfield").keypress(function(e) 

if (e.which == 64) 
{ 
    console.log('you typed "@" symbol!'); 
} 

});