2010-02-15 19 views
5
<script type="text/javascript" src="jquery-1.3.2.js"></script> 
<input id=a type="text" value='sss'/> 
<script type="text/javascript"> 
    $('#a').keyup(
    function(event){ 
    alert(String.fromCharCode(event.which)) 
    }) 
</script> 
Eğer tarayıcınızla Bu kodu test edebilirsiniz

,Neden her zaman kodumda UpperCase var?

ve charCode ait her zaman uyanık UpperCase.

cevap

9

İlk başta beklediğimden küçük değer keypress olay için döndürülür olarak bu, bir hata olduğunu düşünüyorum. keyup/keydown'da bir anahtarın ASCII büyük/kaydırmasız sürümü her zaman döndürülür. Bir onkeydown veya onkeyup olay sırasında keyCode özelliği erişirken "Shift gibi olmayan karakter tuşları dahil olmak üzere herhangi tuşa basıldığında ayarlanır olarak http://www.javascriptkit.com/jsref/eventkeyboardmouse.shtml

, dikkatli olun: Bu bağlantısından

". Eğer basın dene "Shift + bir" sen hep alma sona erecek, denemek ve "A" için keyCode almak için bu anlamı iki keycodes yerine, "Shift" için bir ve "A" için bir de bu emir keyCode hep bir karakter

  • basılması Shift Büyük harf versiyonunun unicode değerini + a gibi bir sayar döndürür olarak ne olursa olsun almazsınız, "a" için keyCode olduğunu Tek keypress olay. tuşları aşağı basıldığında ve anahtarlar iki keyup olay ne zaman yayınlanacağını iki keydown olaylar olarak Shift + bir sayımlarını basılması
  • .
  • keypress ağızdan içinde preslenen bir ya da daha fazla tuş bileşik değer geri gönderir.
  • keydown ve keyup, herhangi bir tuş birleşimini göz ardı ederken tek tuşla değerini döndürür.

Şimdi burada kafa karıştırıcı parçası: nedense a anahtarının elenmemiş değeri anahtar kodu 65 olarak döndürülür Ama 65 ASCII tablosundaki büyük BIR. Dolayısıyla, satır boyunca bir yerde tarayıcı, küçük harf A'yı (ASCII kodu 97) alıp, onu büyük harf A'ya dönüştürüyor ve daha sonra kaymayı değiştirmeyen karakter olarak keydown/keyup geçiriyor. Garip değil mi? Ben "garip" bir davranış der misin,

+0

emin değil, sadece bir kongre var. https://developer.mozilla.org/en/DOM/event.charCode, "keyCode" olayları için vakanın sayılmadığını not eder. Bir 'keyCode' size hangi * tuşa * basıldığını söyler, bundan kaynaklanan karakteri değil. Ve tüm harfler hemen hemen tüm klavyeler üzerinde büyük harfle basıldığı için, büyük harfli varyantı kullanmak mantıklı görünmektedir. Aksi halde güzel cevap. :) – deceze

1

(tahmin)

Bu dava yok Anahtar referans oluyor. Vaka, vardiya anahtarının da aşağı olup olmadığına göre belirlenir.

İlgili konular