JavaScript의 KeyCode에서 문자 값을 얻은 다음 다듬기


152

이것이 내가 지금 가진 것입니다.

$("input").bind("keydown",function(e){
    var value = this.value + String.fromCharCode(e.keyCode);
}

(가) 경우 e.keyCodeASCII 문자하지 않을 수 있습니다 ( Alt, backspace, del, arrows., 등) ... 지금해야합니다 trim에서 이러한 값을 value어떻게 든 (바람직하게 프로그래밍 -하지 룩업 테이블에).

jQuery를 사용하고 있습니다.

keydown이벤트 를 사용해야합니다 . keyPress나는 (캡처에 필요한 특정 키에 대한 활성화하지 않습니다 Esc, del, backspace, 등).

setTimeout입력 값을 얻는 데 사용할 수 없습니다 . setTimeout(function(){},0)너무 느립니다.


11
keydown문자 코드를 캡처하는 데 사용해야 합니까? 당신은 타고 지옥에있어 : quirksmode.org/js/keys.html (힌트 : 사용 keypress!! )
초승달 신선한

1
캐릭터의 경우는 중요하지 않습니다. 그리고 적어도 FF와 IE를 위해 위로, 아래로, 왼쪽으로, 오른쪽으로, esc, del, 백 스페이스를 캡처해야합니다. 그래서 키 누르기는 의문의 여지가 없습니다. 힌트를 주셔서 감사합니다. :-)
David Murdoch

이 문제에 대응 난 그냥 jQuery 플러그인을 작성 : github.com/bpeacock/key-to-charCode는 그것은 조금 아래로 더러운을하고 더 나은 jQuery를에 통합 될 수 있지만 그것이 시작이다.
Brian Peacock

1
KeyCode 문제를 해결하려고 여기에 왔지만 실제로 어떤 키를 눌렀는지 확인하려면 이 답변을 확인하십시오 . TLDR :document.onkeydown = function(e){ console.log('Key: ' + e.key); }
user1717828

답변:


164

어쩌면 나는 질문을 올바르게 이해하지 못했지만 keyup두 입력을 모두 캡처 하려면 사용할 수 없습니까?

$("input").bind("keyup",function(e){
    var value = this.value + String.fromCharCode(e.keyCode);
});

10
ASCII 범위를 벗어난 다른 로케일 (예 : 독일어, 프랑스어, 이탈리아어 및 스페인어와 같은 라틴 -1과 같은)에서는 작동하지 않습니다. 인쇄 할 수없는 키에 대해서도 실패합니다.
Florian Bösch 2012 년

9
숫자 패드에서 숫자를 사용할 때도 실패합니다. e.keyCode는 ASCII (또는 UTF-x) 코드가 아닙니다.
Tom Chiverton

2
나쁜 대답은 기본 문자로는 작동하지 않습니다. 예를 들어, 세미콜론 keyCode는 186이며 String.fromCharCode ()를 실행하면 가비지가 발생합니다. 문제는 keyCode가 모든 문자의 ASCII와 일치하지 않는다는 것입니다. 세미콜론의 ASCII 문자는 59입니다. 모든 특수 문자에 대해 동일한 문제가 발생하며 keyCode는 String.fromCharCode ()에 대한 올바른 코드를 반환하지 않습니다.
Alexander Tsepkov

193

내 경험으로 String.fromCharCode(e.keyCode)는 신뢰할 수 없습니다. String.fromCharCode유니 코드 문자 코드를 인수로 예상합니다. e.keyCode자바 스크립트 키 코드를 반환합니다. 자바 스크립트 키 코드와 유니 코드 문자 코드는 동일 하지 않습니다 ! 특히, keycode숫자 키패드 키는 일반 숫자 키와 다르지만 (키가 다르기 때문에) 서로 다르지만 문자 와 keycode두 문자 모두에 대해 동일한 키 가 반환됩니다 (두 경우 모두 동일한 키를 누름) . upperlowercasecharcodes

예를 들어, 일반 숫자 키 1은 keycode49 로 이벤트를 생성하는 반면 숫자 키패드 키 1 ( Numlock켜짐)은 keycode97을 생성 String.fromCharCode합니다.

String.fromCharCode(49) returns "1"
String.fromCharCode(97) returns "a"

String.fromCharCode자바 스크립트 키 코드가 아닌 유니 코드 문자 코드가 필요합니다. 키 a는 생성하는 keycode문자의 경우에 관계없이 65 의 이벤트를 생성합니다 (이벤트 에서 Shift키를 누른 경우 등에 대한 수정 자도 있음 ). 문자 a는 유니 코드 charcode61이고 문자 Acharcode41입니다 (예 : http://www.utf8-chartable.de/ ). 그러나이 hex값 은 10 진수로 변환하면 charcode"A"는 65이고 "a"는 97입니다. [1] 이것은 우리가 String.fromCharCode이러한 가치를 얻는 것과 일치 합니다.

내 자신의 요구 사항은 숫자와 일반 문자 (문자열의 위치에 따라 수락 또는 거부)를 처리하고 제어 문자 ( F-keys, Ctrl-something)를 통과 시키는 것으로 제한 되었습니다. 따라서 제어 문자가 아닌 경우 제어 문자를 확인할 수 있습니다. 제어 문자가 아닌 경우 범위를 확인한 다음 실제 문자를 가져와야합니다. 대소 문자에 대해 걱정하지 않고 (어쨌든 모든 문자를 대문자로 변경) 키 코드 범위를 이미 제한 했으므로 숫자 키패드 키만 걱정하면됩니다. 다음과 같이하면 충분합니다.

String.fromCharCode((96 <= key && key <= 105)? key-48 : key)

더 일반적으로 문자를 안정적으로 반환하는 함수 charcode는 훌륭하지만 (jQuery 플러그인과 같은 것), 지금은 쓸 시간이 없습니다. 죄송합니다.

또한 e.which정규화하는 e.keyCode및 ( jQuery를 사용하는 경우) 언급 하여 e.charCode어떤 종류의 키를 눌렀는지 걱정할 필요가 없습니다. 그것을 결합하는 문제는 String.fromCharCode남아 있습니다.

[1] 나는 잠시 혼란 스러웠다. 모든 문서 String.fromCharCode는 유니 코드 를 기대 한다고 말하지만 charcode실제로는 ASCII 문자 코드에서 작동하는 것처럼 보였지만 ASCII 문자 코드와 유니 코드 십진수 문자 코드가 평소와 겹친다는 사실과 함께 16 진수에서 10 진수로 변환해야한다고 생각했습니다. 라틴 문자.


2
이 의견은 내 모든 문제를 거의 해결했다. jQuery가 자바 스크립트의 "String.fromCharCode"에 해당하는 "fromKeyCode"를 구현하지 않았다는 것이 놀랍습니다.
Chris J

27
KeyPress 이벤트 가이 작업을 수행하는 것 같습니다. stackoverflow.com/a/9350415/209568을 참조하십시오 . jQuery 문서에서 "키 다운 및 키 업은 어떤 키를 눌렀는지 나타내는 코드를 제공하는 반면 키 누르기는 입력 된 문자를 나타냅니다. 예를 들어 소문자"a "는 키 다운 및 키업에 의해 65로, 키 누름에 의해 97로보고됩니다. 대문자 "A"는 모든 이벤트에서 65로보고됩니다. 이러한 구분으로 인해 화살표 키와 같은 특수 키 입력을 잡을 때 .keydown () 또는 .keyup ()이 더 좋습니다. "
Adam

이것은 키 다운에 중독 된 사람들에게는 가장 불쾌합니다.
Isaac Bolinger

ASCII 및 유니 코드에 대한 마지막 내용입니다. 유니 코드는 모두 같은 장소에 128 개의 ASCII 문자를 갖습니다. 이것은 원래 ASCII로 인코딩 된 파일이 작업없이 유니 코드로 가장하여 변환 될 수 있도록하기위한 것입니다. 확장 ASCII 문자는 같은 위치에 있지 않으므로 해당 문자를 사용하면 운이 좋지 않습니다.
DanielM

1
의 포인트는 keyCode사용하지 않을에 어떤 문자 알고, 누른 키가 무엇인지 아는 것입니다. 예를 들어, Dvorak 키보드의 "U"는 QWERTY 키보드의 "F"또는 한국어 키보드의 "ㄹ"과 동일한 키 코드를 갖습니다. 요점은 문자로 변환하지 않기 때문에 문자로 변환 할 수 있습니다. 키보드 위치에 쉽게 매핑 할 수 있습니다.
Vincent McNabb

77

키 코드로 색인이 생성 된 읽을 수있는 키 이름

단순히 숫자를 변환 할 수 있도록 단순히 정적 배열의 모든 상응하는 값을 나열 그래서 상대적으로 적은 키 코드가 있습니다 65A사용이keyboardMap[65]

모든 키 코드가 인쇄 가능한 문자로 매핑되는 것은 아니므로 식별 가능한 다른 문자열이 반환됩니다.

필요에 맞게 배열을 수정해야 할 수도 있고 번역하지 않으려는 모든 문자에 대해 빈 문자열을 반환 할 수도 있습니다. 다음 배열을 사용하면 어떤 환경에서 어떤 키를 눌렀는지 빠르고 안정적으로 결정할 수 있습니다. 즐겨!

// names of known key codes (0-255)

var keyboardMap = [
  "", // [0]
  "", // [1]
  "", // [2]
  "CANCEL", // [3]
  "", // [4]
  "", // [5]
  "HELP", // [6]
  "", // [7]
  "BACK_SPACE", // [8]
  "TAB", // [9]
  "", // [10]
  "", // [11]
  "CLEAR", // [12]
  "ENTER", // [13]
  "ENTER_SPECIAL", // [14]
  "", // [15]
  "SHIFT", // [16]
  "CONTROL", // [17]
  "ALT", // [18]
  "PAUSE", // [19]
  "CAPS_LOCK", // [20]
  "KANA", // [21]
  "EISU", // [22]
  "JUNJA", // [23]
  "FINAL", // [24]
  "HANJA", // [25]
  "", // [26]
  "ESCAPE", // [27]
  "CONVERT", // [28]
  "NONCONVERT", // [29]
  "ACCEPT", // [30]
  "MODECHANGE", // [31]
  "SPACE", // [32]
  "PAGE_UP", // [33]
  "PAGE_DOWN", // [34]
  "END", // [35]
  "HOME", // [36]
  "LEFT", // [37]
  "UP", // [38]
  "RIGHT", // [39]
  "DOWN", // [40]
  "SELECT", // [41]
  "PRINT", // [42]
  "EXECUTE", // [43]
  "PRINTSCREEN", // [44]
  "INSERT", // [45]
  "DELETE", // [46]
  "", // [47]
  "0", // [48]
  "1", // [49]
  "2", // [50]
  "3", // [51]
  "4", // [52]
  "5", // [53]
  "6", // [54]
  "7", // [55]
  "8", // [56]
  "9", // [57]
  "COLON", // [58]
  "SEMICOLON", // [59]
  "LESS_THAN", // [60]
  "EQUALS", // [61]
  "GREATER_THAN", // [62]
  "QUESTION_MARK", // [63]
  "AT", // [64]
  "A", // [65]
  "B", // [66]
  "C", // [67]
  "D", // [68]
  "E", // [69]
  "F", // [70]
  "G", // [71]
  "H", // [72]
  "I", // [73]
  "J", // [74]
  "K", // [75]
  "L", // [76]
  "M", // [77]
  "N", // [78]
  "O", // [79]
  "P", // [80]
  "Q", // [81]
  "R", // [82]
  "S", // [83]
  "T", // [84]
  "U", // [85]
  "V", // [86]
  "W", // [87]
  "X", // [88]
  "Y", // [89]
  "Z", // [90]
  "OS_KEY", // [91] Windows Key (Windows) or Command Key (Mac)
  "", // [92]
  "CONTEXT_MENU", // [93]
  "", // [94]
  "SLEEP", // [95]
  "NUMPAD0", // [96]
  "NUMPAD1", // [97]
  "NUMPAD2", // [98]
  "NUMPAD3", // [99]
  "NUMPAD4", // [100]
  "NUMPAD5", // [101]
  "NUMPAD6", // [102]
  "NUMPAD7", // [103]
  "NUMPAD8", // [104]
  "NUMPAD9", // [105]
  "MULTIPLY", // [106]
  "ADD", // [107]
  "SEPARATOR", // [108]
  "SUBTRACT", // [109]
  "DECIMAL", // [110]
  "DIVIDE", // [111]
  "F1", // [112]
  "F2", // [113]
  "F3", // [114]
  "F4", // [115]
  "F5", // [116]
  "F6", // [117]
  "F7", // [118]
  "F8", // [119]
  "F9", // [120]
  "F10", // [121]
  "F11", // [122]
  "F12", // [123]
  "F13", // [124]
  "F14", // [125]
  "F15", // [126]
  "F16", // [127]
  "F17", // [128]
  "F18", // [129]
  "F19", // [130]
  "F20", // [131]
  "F21", // [132]
  "F22", // [133]
  "F23", // [134]
  "F24", // [135]
  "", // [136]
  "", // [137]
  "", // [138]
  "", // [139]
  "", // [140]
  "", // [141]
  "", // [142]
  "", // [143]
  "NUM_LOCK", // [144]
  "SCROLL_LOCK", // [145]
  "WIN_OEM_FJ_JISHO", // [146]
  "WIN_OEM_FJ_MASSHOU", // [147]
  "WIN_OEM_FJ_TOUROKU", // [148]
  "WIN_OEM_FJ_LOYA", // [149]
  "WIN_OEM_FJ_ROYA", // [150]
  "", // [151]
  "", // [152]
  "", // [153]
  "", // [154]
  "", // [155]
  "", // [156]
  "", // [157]
  "", // [158]
  "", // [159]
  "CIRCUMFLEX", // [160]
  "EXCLAMATION", // [161]
  "DOUBLE_QUOTE", // [162]
  "HASH", // [163]
  "DOLLAR", // [164]
  "PERCENT", // [165]
  "AMPERSAND", // [166]
  "UNDERSCORE", // [167]
  "OPEN_PAREN", // [168]
  "CLOSE_PAREN", // [169]
  "ASTERISK", // [170]
  "PLUS", // [171]
  "PIPE", // [172]
  "HYPHEN_MINUS", // [173]
  "OPEN_CURLY_BRACKET", // [174]
  "CLOSE_CURLY_BRACKET", // [175]
  "TILDE", // [176]
  "", // [177]
  "", // [178]
  "", // [179]
  "", // [180]
  "VOLUME_MUTE", // [181]
  "VOLUME_DOWN", // [182]
  "VOLUME_UP", // [183]
  "", // [184]
  "", // [185]
  "SEMICOLON", // [186]
  "EQUALS", // [187]
  "COMMA", // [188]
  "MINUS", // [189]
  "PERIOD", // [190]
  "SLASH", // [191]
  "BACK_QUOTE", // [192]
  "", // [193]
  "", // [194]
  "", // [195]
  "", // [196]
  "", // [197]
  "", // [198]
  "", // [199]
  "", // [200]
  "", // [201]
  "", // [202]
  "", // [203]
  "", // [204]
  "", // [205]
  "", // [206]
  "", // [207]
  "", // [208]
  "", // [209]
  "", // [210]
  "", // [211]
  "", // [212]
  "", // [213]
  "", // [214]
  "", // [215]
  "", // [216]
  "", // [217]
  "", // [218]
  "OPEN_BRACKET", // [219]
  "BACK_SLASH", // [220]
  "CLOSE_BRACKET", // [221]
  "QUOTE", // [222]
  "", // [223]
  "META", // [224]
  "ALTGR", // [225]
  "", // [226]
  "WIN_ICO_HELP", // [227]
  "WIN_ICO_00", // [228]
  "", // [229]
  "WIN_ICO_CLEAR", // [230]
  "", // [231]
  "", // [232]
  "WIN_OEM_RESET", // [233]
  "WIN_OEM_JUMP", // [234]
  "WIN_OEM_PA1", // [235]
  "WIN_OEM_PA2", // [236]
  "WIN_OEM_PA3", // [237]
  "WIN_OEM_WSCTRL", // [238]
  "WIN_OEM_CUSEL", // [239]
  "WIN_OEM_ATTN", // [240]
  "WIN_OEM_FINISH", // [241]
  "WIN_OEM_COPY", // [242]
  "WIN_OEM_AUTO", // [243]
  "WIN_OEM_ENLW", // [244]
  "WIN_OEM_BACKTAB", // [245]
  "ATTN", // [246]
  "CRSEL", // [247]
  "EXSEL", // [248]
  "EREOF", // [249]
  "PLAY", // [250]
  "ZOOM", // [251]
  "", // [252]
  "PA1", // [253]
  "WIN_OEM_CLEAR", // [254]
  "" // [255]
];

참고 : 위 배열에서 각 값의 위치가 중요합니다. ""알 수없는 값을 코드에 대한 자리 표시 자입니다.

이 정적 배열 조회 접근 방식을 사용하여 다음 코드 스 니펫을 사용해보십시오 ...


주목할 가치가있는 키 코드

편지 AZ : (65-90)

keyboardMap[65];  // A
...
keyboardMap[90];  // Z

숫자 0-9 : (48-57)

keyboardMap[48];  // 0
...
keyboardMap[57];  // 9

숫자 패드 0-9 : (96-105)

keyboardMap[96];   // NUMPAD0
...
keyboardMap[105];  // NUMPAD9

화살표 키 : (37-40)

keyboardMap[37];  // LEFT
keyboardMap[38];  // UP
keyboardMap[39];  // RIGHT
keyboardMap[40];  // DOWN

탭 키 : (9)

keyboardMap[9];  // TAB

키 입력 : (13)

keyboardMap[13];  // ENTER

스페이스 바 키 : (32)

keyboardMap[32];  // SPACE

OS 특정 키 (91) Windows 키 (Windows) 또는 Command 키 (Mac)

keyboardMap[91];  // OS_KEY

Alt 키 : (18)

keyboardMap[18];  // ALT

컨트롤 키 : (17)

keyboardMap[17];  // CONTROL

Shift 키 : (16)

keyboardMap[16];  // SHIFT

캡 잠금 키 : (20)

keyboardMap[20];  // CAPS_LOCK

특수 문자에서는 작동하지 않습니다. Shift 키를 사용하여 키를 입력하면 어떤 해결책이 있습니까?
Shaik Matheen

14

중요한 참고 사항 : 위의 대답은 keyCode> = 144, 즉 마침표, 쉼표, 대시 등에서 올바르게 작동하지 않습니다. 일반적인 알고리즘을 사용해야하는 경우 :

let chrCode = keyCode - 48 * Math.floor(keyCode / 48);
let chr = String.fromCharCode((96 <= keyCode) ? chrCode: keyCode);

이유가 궁금하다면 내장 JS 함수의 동작 때문에 이것이 필요합니다 String.fromCharCode(). 값을 보려면 keyCode <= 96함수를 사용하여 매핑하는 것 같습니다.

chrCode = keyCode - 48 * Math.floor(keyCode / 48)

값을 보려면 keyCode > 96함수를 사용하여 매핑하는 것 같습니다.

chrCode = keyCode

이것이 이상한 행동처럼 보인다면 .. 동의합니다. 슬프게도 JS 코어에서 본 가장 이상한 것과는 거리가 멀다.

document.onkeydown = function(e) {
    let keyCode = e.keyCode;
    let chrCode = keyCode - 48 * Math.floor(keyCode / 48);
    let chr = String.fromCharCode((96 <= keyCode) ? chrCode: keyCode);
    console.log(chr);
};
<input type="text" placeholder="Focus and Type"/>


1
당신은 let2009 년의 질문에 대한 답변으로 사람들을 혼동 할 것 입니다. :-)
David Murdoch

12
누군가가 올려서 ES6을 발견한다면 let나는 그들에게 호의를 베풀었다. ;-)
galanant

@galarant 왜 / 어떻게 작동하는지 설명해 주시겠습니까?
Izhar Aazmi

@IzharAazmi가 설명을 추가했습니다. 그것이 도움이되기를 바랍니다!
galarant

1
숫자 키패드의 숫자 키 (확장 키보드 오른쪽의 키 표)에 대해서도 올바르게 작동하지 않습니다.
Scott Buchanan

2

이것이 게임 또는 빠른 응답 유형의 응용 프로그램이므로 KEYPRESS보다 KEYDOWN을 사용한다고 가정합니다.

편집 : Dang! 않는 JQuery와 (또는 오히려 기본 DOM 호스트) : 내가 수정 스탠드 (당신에게 초승달 신선한 다윗에게 감사) 하지 WM_KEYDOWN의 등 행사의 세부 사항을 노출합니다. 오히려 그들은이 데이터를 사전 소화하고 JQuery에서도 keyDown의 경우 다음을 얻습니다.

이러한 속성은 UniCode 값입니다.
참고로 JQuery 문서에서 권위있는 참조를 찾을 수는 없었지만 그물에 대한 많은 평판이 좋은 예제는이 두 속성을 나타냅니다.

따라서 내 자바 (Javascript가 아닌)에서 채택한 다음 코드는 완전히 잘못되었습니다 ...

다음은 키 코드의 "흥미로운"부분을 제공합니다.

  value = e.KeyCode;
  repeatCount = value & 0xFF;
  scanCode = (value >> 16) & 0xFF;  // note we take the "extended bit" deal w/ it later.
  wasDown = ((value & 0x4000) != 0);  // indicate key was readily down (auto-repeat)
  if (scanCode > 127)
      // deal with extended
  else
      // "regular" character

hm, no go, scanCode의 결과는 항상 0입니다. e.KeyCode는 e.keyCode 여야합니다 (KeyCode는 정의되지 않음).
David Murdoch

이봐 요 ... 안녕, 잠깐만 우리는 JScript를 여기에서 말하는가?
초승달 신선한

@David M. 나의 나쁜, 아마도 JQuery가이 코드 부분을 "사전 소화"할 수있다. 지금 조사 중입니다.
mjv 2016

1
@mjv :이 코드는 어디서 얻었습니까? 그것은 당신을 위해 일한 적이 있습니까? AFAIK DOM 없음 구현은 모든 정보를 이벤트 객체로 인코딩 keydown하거나 인코딩 하지 않습니다.
Crescent Fresh

@Crescent : 내 자바 코드에서 신속하고 순진하게 적응했습니다. 어쨌든, 당신은 완전히 옳습니다 : DOM 호스트는 키보드조차도 그러한 원시 이벤트를 전달하지 않습니다. 나는 그에 따라 내 주장을 고쳤다. 여전히 JQuery.com의 주제에 대한 권위있는 문서를 찾고 있습니다
mjv

0

나는 이것이 오래된 질문이라는 것을 알고 있지만 오늘이 문제에 대한 사전 패키지 솔루션을 찾고 그것을 발견했으며 실제로 내 요구를 충족시키는 것을 찾지 못했습니다.

대문자 (shift), 소문자, 문장 부호, 숫자 키패드 등을 올바르게 지원하는 솔루션 (영어로만 제공)은 다음과 같습니다.

또한 ESC, 화살표, 기능 키 등과 같이 인쇄 할 수없는 키를 간단하고 간단하게 식별하고 반응 할 수 있습니다.

https://jsfiddle.net/5hhu896g/1/

keyboardCharMap and keyboardNameMap are the key to making this work

타이핑과 많은 발견을 구해준 DaveAlger에게 감사드립니다! -명명 된 키 배열을 제공합니다.


당신의 바이올린이 가장 우수합니다! 공유해 주셔서 감사합니다. 훌륭하게 작동합니다. 동일한 값을 가진 항목이있는 양식 필드에 대해 숭고한 스타일의 다중 커서 편집을 구현하는 데 사용하고 있습니다.
Todd Hammer

0

최근 에 , 및 이벤트를 각각 문자와 키로 변환하는 keysight 라는 모듈을 작성했습니다 .keypresskeydownkeyup

예:

 element.addEventListener("keydown", function(event) {
    var character = keysight(event).char
 })

ñ와 같은 키를 지원합니까?
Arnold Roa

@ArnoldRoa 나는 그와 같은 문자를 희망적으로 지원할 수있는 것을 밀었습니다. 악센트 문자가있는 키보드가 없으므로 테스트 해 보시겠습니까?
BT

0

내가 한 것처럼 키 코드의 실제 유니 코드 문자 값을 찾고있는 사람들에게는 여기에 대한 기능이 있습니다. 예를 들어, 오른쪽 화살표 유니 코드 키 코드가 주어지면 보이는 문자열이 출력됩니다.\u001B\u005B\u0043

function toUnicode(theString) {
    var unicodeString = '';
    for (var i = 0; i < theString.length; i++) {
        var theUnicode = theString.charCodeAt(i).toString(16).toUpperCase();
        while (theUnicode.length < 4) {
            theUnicode = '0' + theUnicode;
        }
        theUnicode = '\\u' + theUnicode;
        unicodeString += theUnicode;
    }
    return unicodeString;
}

0

읽기 전용 속성을 사용할 수도 있습니다 key. 또한 특수 키 shift등을 존중하며 IE9에서 지원합니다.

비 인쇄 또는 특수 문자를 누르면 값은 정의의에있을 것입니다 키 값 과 같은 'Shift''Multiply'.

  • 건반     event.key
  • X             -> 'x'
  • Shift+ X ->'X'
  • F5            -> 'F5'

-2

모든 키 코드에 대한 키 누름 및 문자 값에서 키 코드 가져 오기 링크를 참조하십시오.

$('input#inp').keyup(function(e){
   $(this).val(String.fromCharCode(e.keyCode)); 
   $('div#output').html('Keycode : ' + e.keyCode);  
});

1
이것은 잘못된 것입니다! 사용자 키보드에서 활성화 된 현재 언어를 고려하지 않기 때문입니다. 예를 들어, 내가 'ф'를 입력하지만, 'A'... 제공
바딤 Guzev

이것은 정확하지 않습니다, 텍스트는 키보드 layot에 따라 변경됩니다
Arnold Roa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.