2012-06-23 24 views
6

Sayfanın bir bölümünü (div) tıkladıktan sonra kullanıcının girişini yakalamam gereken bir sayfam var.event.charCode her zaman geri dönüyor 0

<html> 
<body> 
<div style="background-color: lightpink" onkeydown="onkeydown1(event)" tabindex="-1"> 
click me, then press a key 
</div> 

<script type="text/javascript"> 
function onkeydown1(event) 
{ 
    alert(event.charCode); 
} 
</script> 
</body> 
</html> 

görün Yürüt: İşte benim kod "odağı" http://jsfiddle.net/WRwBF/

O kadar FireFox varsayılan olarak bir div izin vermez, çünkü bu almak için bana uzun zaman aldı Sonunda div için tabindex ayarının odakta olmasını ve onkeydown olayının çalışmasını sağladığını öğrendim.

Sorunum şu ki, div 'ı tıklatıp bir tuşa bastığımda, "0" değeri, hangi tuşa basıldığına bakılmaksızın döndürülüyor. Bu neden oluyor ve bunu nasıl düzeltebilirim?

Verebildiğiniz herhangi bir rehberliği çok takdir ediyorum!

+0

Kısa sürüm: [tarayıcılar dilsiz] (http://www.quirksmode.org/js/keys.html). Bu QuirksMode makalesi her şeyi açıklamalıdır. Temel olarak, 'charCode' portatif olarak almak için 'keyPress' olayını tespit etmeniz ve' evt.charCode || evt.keyCode' – millimoose

cevap

4

(tarayıcıya bağlı olarak).

Özet: keypress olayının kullanılması, yazılan karakter hakkında güvenilir bilgi edinmenin tek yoludur. Aşağıdaki size çoğu durumda yazdığınız karakteri almak için yeterli olacaktır:

var charCode = (typeof event.which == "undefined") ? event.keyCode : event.which; 
alert("Character typed: " + String.fromCharCode(charCode)); 
0

kullanın event.keyCode veya event.which Oku http://unixpapa.com/js/key.html yerine

+1

'event.keyCode' küçük harfleri ve büyük harfleri ayırt edebilmek istiyorsanız ne yapmak istemeyebilir. (Veya değiştirici tuşlarını yok saymak istersiniz.) – millimoose

0

Sen tabindex özelliğiyle odak var ve buna sekmeyi can, ancak div bir anahtarı almak için arabirimi yoktur Etkinlik.

Bunları metin girişlerinden ve pencerenin kendisinden alırsınız.

+0

Hayır. Öğe odağı aldıktan sonra, önemli olayları tetikleyebilir. http://jsfiddle.net/timdown/rLfF5/ –

İlgili konular