Firefox에서 자주 발생하는 바닐라 자바 스크립트 코드를 정리하는 데 도움이 필요합니다.숫자 전용 자바 스크립트 파이어 폭스 솔루션
다음/keyCode 검사는 input
또는 textarea
에 숫자 만 허용하는 가장 일반적인 바닐라 JS 솔루션에 대한 것 같습니다.
var charCode = (e.which) ? e.which : e.keyCode;
if (charCode > 31 && (charCode < 48 || charCode > 57)) {
return false;
}
return true;
태그로 onkeypress="return function(event);"
을 통해 호출됩니다.
그러나 Firefox는 다른 브라우저처럼 onkeyup
및 onkeydown
이 아닌 onkeypress
호출로 화살표 키를 바인딩합니다. 이는 예를 들어 왼쪽 화살표 키 charCode
은 37
이지만 % (shift + 5)는 charCode
입니다. 더 중요한 것은 화살표 키를 탐색 (캐럿/텍스트 커서를 왼쪽이나 오른쪽으로 이동)에 사용할 수 없다는 것입니다.
그러나, 차이 (http://www.asquare.net/javascript/tests/KeyCode.html에 도시 된 바와 같이) %가 charCode
및 37
의 which
있는 동안 왼쪽 화살표 키, keyCode 37
을 갖는다는 것이다. 그래서 다음을 수행하여 화살표 키가 잘 작동 할 수 있었다 그러나
if (charcode > 31 && (charcode < 48 || charcode > 57)) {
if (e.keycode && e.keyCode > 36 && e.keyCode < 41) {
return true;
}
return false;
}
return true;
, 내가 그것을 할 수있는 최선의 또는 깨끗한 방법은 아니며, 더 키가 다르게 처리가 될 수 있음을 느낌 파이어 폭스는 화살표 키보다 더 깨끗한 바닐라 JS 솔루션 또는이 기능 내에서 화살표 키를 최소한으로 확인하는 방법은 무엇입니까?
감사합니다.
편집 : 난 그냥 코드가 파이어 폭스를 해결하더라도 이들 지금 charCodes 37-40 (즉, %)을 입력 할 수 있습니다, 그것은 다른 모든 브라우저에 대한 새로운 문제를 도입한다는 생각. keyCode
을 확인하는 대신 charCode
또는 which
을 확인해야합니다. 그렇지 않은 경우 동일한 방법으로 확인하십시오.
당신이 '이 있다는 것을 알고 계십니까 :이 화살표 키, 백 스페이스, ... 선택 등의 작업을 삭제하는 방법에 나쁜 영향을 동일한 사용자 경험을 제공하지 않으며,이 '?특정 키를 차단하는 것은 사용자 친화적이지 않으므로 키보드가 깨 졌다고 생각할 수 있습니다. 또한, 그들은 여전히 (상황에 맞는 메뉴를 통해) 복사/붙여 넣기를 사용할 수 있으므로 끝내지 않을 것입니다. 그대로 사용자 입력을 그대로 받아 들인 다음 색상 표시 또는 입력 근처의 메시지를 통해 나중에 유효성을 검사하는 것이 좋습니다. – trincot
나는 그것을 알고있다. 그러나 그것은 정말로 여기의 필요에 어울리지 않을 것이다. 또한, 내가 말할 수있는 것부터, 다른 비 문자 키는 'onkeydown'과 'onkeyup'이 아닌, 잘 작동하는 것으로 보인다. (애 태움, 단지 input/textarea와 떨어져있는 'onkeypress'일 뿐이다.) It 's 분명한 숫자 만 입력해야하며 복사/붙여 넣기의 경우에는 텍스트를 숫자로 다시 설정합니다. 그러나 화살표 네비게이션은 꼭 있어야하며 파이어 폭스는 저 작업을 잘 수행하는 것에 대해 걱정할 정도로 인기있는 브라우저입니다. –
원래 코드가 의도 한 다른 문자를 입력하지 못하도록 (단지 입력이 아니라) 입력 된 숫자 만 사용하여 원본 코드를 찾았 기 때문에 원래 코드를 찾았습니다 (또한 입력 대신 텍스트 영역에 대해서도 수행함) . 그러나 원래의 코드를 사용하는 것이 가장 쉬운 방법이었습니다. 문제 해결을 위해 해결책을 물어 보는 것이 가장 좋았습니다. 그것을 지우는 희망. :) –