2013-11-27 3 views
0

ASCII를 keypress, keyupkeydown dom 이벤트가 반환하는 keyCode으로 변환하는 JavaScript/jQuery 스크립트가 있습니까?ASCII를 키 코드 변환기

내가 좋아하는 뭔가에 대해 생각하고 있어요 :

"A".toKeycode 

편집 : 누군가가 올바른 키 코드에 모든 아스키 문자로 변환 일부 스크립트를 만든 경우 내가 부탁 해요. 그래서 " ".toKeycode도 작동해야합니다.

+0

http://www.w3schools.com/jsref/jsref_charcodeat.asp – Andy

+0

@Andy 그러나 이것을 사용하려면 : "" ".charCodeAt (0) - 32'하지만" "".charCodeAt (0)' – 90intuition

+0

keyup, keydown 및 keypress 이벤트를 통해 반환 된 키 코드에 대해 이야기하고 있습니까? 귀하의 질문을 명확히하십시오 –

답변

3

제 경험상 String.fromCharCode(e.keyCode)은 신뢰할 수 없습니다. String.fromCharCode은 유니 코드 charcodes를 인수로 사용합니다. e.keyCode은 javascript 키 코드를 반환합니다. 자바 스크립트 키 코드와 유니 코드 문자 코드는 똑같지 않습니다! 특히, 숫자 코드 키는 일반 숫자 키와는 다른 키 코드를 반환합니다 (다른 키이기 때문에). 동일한 키 코드는 다른 문자 코드를 가지고 있음에도 불구하고 대문자와 소문자 모두에 대해 반환됩니다 (두 경우 모두 동일한 키를 누름). .

String.fromCharCode(49) 반환 "1" String.fromCharCode(97) : (숫자 잠금에 포함) numberpad 키 1 키 코드 97 우리는 다음과 같은 얻을 String.fromCharCode와 함께 사용 생성 예를 들어

는 일반 숫자 키 1 키 코드 (49) 이벤트를 생성 "a"를 반환합니다. String.fromCharCode은 javascript 키 코드가 아니라 유니 코드 문자 코드를 필요로합니다. 키는 생성 할 문자의 대소 문자와 독립적 인 65의 키 코드를 가진 이벤트를 생성합니다 (이벤트에서 Shift 키를 누른 경우 등에 대한 수정 자도 있음). 문자 "a"는 유니 코드 charcode가 61이고 문자 "A"는 charcode가 41입니다 (예 : http://www.utf8-chartable.de). 그러나 그 값은 16 진수 값으로 10 진수로 변환하면 "A"의 경우 65 자이고 "a"의 경우 97 자의 charcode가됩니다. 1이 값은 String.fromCharCode에서 얻은 값과 일치합니다.

내 자신의 요구 사항은 숫자와 일반 문자 처리 (문자열의 위치에 따라 허용 또는 거부) 및 제어 문자 (F 키, Ctrl-something)를 처리하는 것으로 제한됩니다. 따라서 제어 문자가 아닌지 확인한 후 범위를 확인한 다음 실제 문자를 가져와야합니다. 나는 대소 문자를 걱정하지 않고 모든 문자를 대문자로 바꾸고 이미 키 코드의 범위를 제한 했으므로 숫자 패드 키만 걱정하면됩니다. 그에 대한 다음과 같은 접미사 :

String.fromCharCode ((96 < = 키 & & 키 < = 105) 키를-48 : 키) 가 더 일반적으로, 함수가 안정적으로 좋을 것 charCode 값의 문자를 반환을 (어쩌면 jQuery 플러그인처럼), 지금은 쓸 시간이 없다. 죄송합니다.

e.which (jQuery를 사용하는 경우)는 e.keyCode 및 e.charCode를 정규화하므로 어떤 키를 눌렀는지 걱정할 필요가 없습니다. 그것을 String.fromCharCode과 결합 할 때의 문제점이 남아 있습니다.

1 나는 잠시 혼란스러워했다. 모든 문서는 String.fromCharCode이 유니 코드 charcode를 기대한다고 말합니다. 실제로 ASCII 문자 코드에서는 작동하는 것처럼 보였습니다.하지만 ASCII 코드와 유니 코드 십진법 코드가 겹치는 사실과 결합하여 16 진수로 변환해야 할 필요가 있다고 생각했습니다. 평범한 라틴 문자들.