먼저 각 이벤트의 차이점을 이해해 봅시다
키 다운 : 컨트롤에 초점이있을 때 키가 눌렀을 때 발생합니다.
Keypress : 컨트롤에 초점이있을 때 키가 눌렀을 때 발생합니다.
Keyup : 컨트롤에 초점이있을 때 키가 릴리스 될 때 발생합니다.
1. Keypress는 주로 문자 및 숫자와 같은 ANSI 캐릭터를받는 데 사용됩니다. Keydown 및 KeyUp 이벤트 프로세스는 일반적으로 PRSCRN을 제외한 키보드의 모든 키를 캡처 할 수 있습니다 (특수 키보드의 특수 키는 여기에서 설명하지 않습니다.
2. Keypress는 단일 문자 만 캡처 할 수 있지만 Keydown과 KeyUp은 키 조합을 캡처 할 수 있습니다.
3. Keypress는 키보드의 물리적 상태 (Shift Key)를 표시하지 않고 캐릭터 만 전달합니다. Keypress는 각 문자의 상류 및 소문자를 다른 키 코드, 즉 두 가지 다른 문자로 해석합니다. Keydown 및 Keyup은 키 값 문자의 크기를 결정할 수 없습니다. Keydown 및 keyup 각 문자의 대문자 및 소문자 형태를 두 개의 매개 변수로 해석합니다. 키 코드 - 물리적 키 (A 및 A를 동일한 키로 반환) 및 Shift를 표시하고 Shift + 키의 상태를 표시하고 A 또는 중 하나를 반환합니다. 그들을.
5. Keypress는 키패드의 숫자 문자와 기본 키보드를 구별하지 않으며 Keydown과 Keyup은 키패드의 숫자와 기본 키보드를 구별합니다.
6. 키 다운 및 키 업 이벤트는 (keydown) 또는 릴리스 (keyup)가 키를 할 때 발생합니다. 키보드 키는 일반적으로 즉시 밀려 나기 때문에 (이것은 마우스와 다릅니다),이 두 이벤트 중 어느쪽에는 큰 차이가 없습니다. 또한 UP과 다른 두 가지 사이에는 또 다른 차이가 있습니다. 키의 수정 된 상태를 판단하려면 UP를 사용해야합니다.
키 다운 이벤트를 사용하여 사용자 입력을 차단할 수 있습니다. 예를 들어 특정 입력 필드는 숫자 만 입력 할 수 있습니다.
키보드의 숫자 키의 키 코드
[48-57] 숫자 키
[96-105] 숫자 키패드
또한 백 스페이스 키 삭제를 허용하십시오
코드는 다음과 같습니다
코드 사본은 다음과 같습니다.
var input = document.getElementById ( 'number_ipt')
input.onkeydown = function (e) {
var keycode = e.keycode
if (! isnumber (keycode)) false를 반환합니다
}
// 숫자 만 입력 할 수 있습니다
함수 ISNUMBER (키 코드) {
// 숫자
if (keycode> = 48 && keycode <= 57) true를 반환합니다.
// 작은 숫자 키보드
if (keycode> = 96 && keycode <= 105) true를 반환합니다.
// 백 스페이스 키
if (keycode == 8) true를 반환합니다
거짓을 반환하십시오
}