>웹 프론트엔드 >JS 튜토리얼 >입력 시간 형식을 제어하는 ​​Javascript 방법_javascript 기술

입력 시간 형식을 제어하는 ​​Javascript 방법_javascript 기술

WBOY
WBOY원래의
2016-05-16 16:17:301670검색

이 글의 예시에서는 자바스크립트가 입력 시간 형식을 제어하는 ​​방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

이전에는 keydown, keyup 이벤트를 중심으로 Javascript 제어 시간 형식 입력을 했는데 작성이 매우 복잡하고 버그가 있다는 느낌이 들었습니다.

오늘은 키누름 이벤트, 키다운, 키업의 차이점에 대해 알아봤습니다. 대략 다음과 같습니다(지금까지는 이 정도만 알고 있습니다).

keydown: 키를 눌렀을 때 발생하는 이벤트를 통해 keyCode를 얻을 수 있으며, 텍스트 상자를 입력하기 전의 값을 얻을 수 있습니다.

keyup: 키가 팝업(해제)될 때 트리거됩니다. 이벤트를 통해 keyCode를 얻을 수 있으며, 텍스트 상자에 입력한 후의 값을 얻을 수 있습니다.

keypress:

이 이벤트는 Chrome과 IE에서 기본적으로 동일하지만 Firefox는 약간 다릅니다. 1. Chrome 및 IE: 누른 키가 텍스트 상자에 문자가 표시되는 한 트리거됩니다(예: 문자, 숫자, 기호 등 입력). event.key는 정의되지 않습니다. 표시할 수 없는 문자는 실행되지 않습니다(예: 화살표 키, 홈, 백스페이스 등)

2. Firefox에서는 문자, 숫자, 기호, 방향, 백스페이스 및 기타 키가 트리거될 수 있으며, 키 이름은 event.key를 통해 얻을 수 있습니다. 누른 키가 문자를 출력할 수 있는 경우 event.keyCode는 0입니다. 문자를 출력할 수 없는 경우 event.keyCode는 해당 ASCII 코드입니다

주제로 돌아가서 코드를 직접 살펴보겠습니다(위에서 언급한 이벤트는 아래 코드의 e와 동일합니다).

코드 복사 코드는 다음과 같습니다.var isFF = /firefox/i.test(navigator. 사용자 에이전트)
$("입력").on({
Keyup : 기능 (e) {
​ !/^[d:] $/.test(e.target.value) && (e.target.value = "");
},
키 누르기 : 기능 (e) {
If (isFF && e.keyCode !== 0) {
/// Firefox에서는 아무 키나 누르면 keypress 이벤트가 트리거되고, IE/Chrome에서는 문자를 출력할 수 있는 키만 누르면 이벤트가 트리거됩니다.
                           /// Firefox의 경우 e.keyCode!==0은 백스페이스, 방향, 홈 등의 키 중 하나를 눌렀음을 의미합니다.
         } else {
If (e.target.value.length > 7)
                      false를 반환합니다.
If (/d{2}$/.test(e.target.value)) {
                     e.target.value = ':';
            }
            var char = String.fromCharCode(e.keyCode === 0 ? e.which : e.keyCode);
If (!/^d/.test(char))
                      false를 반환합니다.
}
}
});

Firefox에서 문자를 출력할 수 있는 키와 문자를 출력할 수 없는 키를 구별하려면 isFF && e.keyCode !== 0을 사용하세요. Firefox의 e.keyCode에서는 값을 가져오지 못할 수 있으므로 e.which는 다음과 같습니다. 대신 사용됩니다.

keyup은 입력방법 사용시 한자나 문자가 입력되지 않는 문제를 해결하기 위해 사용됩니다.

String.fromCharCode()를 통해 ASCII 코드에 해당하는 문자를 가져옵니다.

이 기사가 모든 사람의 JavaScript 프로그래밍 설계에 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.