/ / Javascript: event.which a charCodeAt working together - javascript, jquery, keypress

Javascript: event.which a charCodeAt spolupracujú - javascript, jquery, keypress

Beriem to, čo užívateľ napísal pomocou event.which na stlačenie klávesu a výstup pomocou String.fromCharCode.

Typy používateľov: a
event.which: 67
výstupy: A

Pre čísla a písmená, ktoré zvládnem, ale keď hovorím o špeciálnych znakoch, dostanem úplne odlišné výstupy.

Typy používateľov: -
event.which: 189
výstupy: ½

Po výskume som narazil na funkciu charCodeAta pomocou tohto výstupu výstup prichádza dokonale, dokonca aj špeciálne znaky.

Bohužiaľ nemôžem použiť znak charCodeAt, pretože používateľ zadáva priamo z dokumentu $ (dokument) a nie z poľa.

Otázkou teda je, či existuje spôsob, ako získať správny znak z udalosti keyPress.

Ak stále nedokážem zistiť moje pochybnosti, urobil som ťa husle =)

odpovede:

6 pre odpoveď č. 1

Použi keypress udalosť namiesto keyup, Nahlasuje znakový kód namiesto kódov kľúčov a spúšťa sa pri písaní skutočných znakov, nie pri uvoľňovaní klávesu, takže spracováva aj opakované znaky.

$("#field").focus().keypress(function(e){
var key = e.which;
$("#key").val(String.fromCharCode(key));
});

http://jsfiddle.net/Guffa/QCHt7/1/

edit:

Ak chcete všade stlačiť stlačenia klávesov, môžetemusia pripojiť udalosť k dokumentu a tiež k akýmkoľvek prvkom, ktoré vyžadujú stlačenie klávesov. Napríklad textové pole spracuje klávesovú skratku a nevyvolá bublinu až k nadradenému prvku.


2 pre odpoveď č. 2

Používate keyup, udalosť, ktorá hlási, ktorý kláves bol stlačený a nie ktorý znak bol zadaný. Namiesto toho by ste mali používať stlačenie klávesu, napríklad:

$(document).keyup(function(e){
console.log(String.fromCharCode(e.which));
});

z dokument o stlačení kláves:

Všimnite si, že keydown a keyup poskytujú kódoznačujúce, ktorý kľúč je stlačené, zatiaľ čo stlačenie tlačidla označuje, ktorý znak bol zadaný. pre napríklad malé písmeno „a“ bude hlásené ako 65 pomocou klávesov downdown a keyup, ale ako 97 stlačenie klávesu. Všetci uvedú veľké písmeno „A“ ako 65 diania. Z tohto dôvodu pri chytení špeciálnych úhozov ako sú klávesy so šípkami, .keydown () alebo .keyup () je lepšou voľbou.