다음 html5 입력 요소가 있습니다.
<input type="number">
이 입력이 왜 문자 'e'를 입력 필드에 입력 할 수있게합니까? 다른 알파벳 문자를 입력 할 수 없습니다 (예상대로)
크롬 사용하기 44.0.2403.107
무슨 뜻인지 확인하려면 : http://www.w3schools.com/html/tryit.asp?filename=tryhtml_input_number
다음 html5 입력 요소가 있습니다.
<input type="number">
이 입력이 왜 문자 'e'를 입력 필드에 입력 할 수있게합니까? 다른 알파벳 문자를 입력 할 수 없습니다 (예상대로)
크롬 사용하기 44.0.2403.107
무슨 뜻인지 확인하려면 : http://www.w3schools.com/html/tryit.asp?filename=tryhtml_input_number
답변:
그것이 정확히 스펙 이 작동한다고 말하는 방식이기 때문 입니다. 숫자 입력은 음수 기호 및 또는 문자를 포함하여 부동 소수점 숫자를 사용할 수 있습니다 (여기서 지수는 또는 뒤에있는 숫자 임).e
E
e
E
부동 소수점 숫자는 정확히 다음 순서로 다음과 같은 부분으로 구성됩니다.
- 선택적으로, 첫 번째 문자는 "
-
"문자 일 수 있습니다 .- "
0—9
" 범위에있는 하나 이상의 문자- 선택적으로 다음 부분은 정확히 다음 순서로 수행됩니다.
- "
.
"문자- "
0—9
" 범위에있는 하나 이상의 문자- 선택적으로 다음 부분은 정확히 다음 순서로 수행됩니다.
- "
e
"문자 또는 "E
"문자- 선택적으로 "
-
"문자 또는 "+
"문자- "
0—9
" 범위에있는 하나 이상의 문자
e
입력하는 데 지루한 많은 수의 숫자를 압축하는 데 유용합니다. 사소한 예로서2e2 = 2*10^2 = 200
e
는 지수를 의미합니다.
아래와 같이 간단하게 만들 수 있습니다
<input type="number" onkeydown="javascript: return event.keyCode == 69 ? false : true" />
업데이트 된 답변
@ 88 MPG가 제안한대로 더욱 간단하게 만들 수 있습니다
<input type="number" onkeydown="return event.keyCode !== 69" />
return event.keyCode !== 69
불필요한 삼항 연산자를 피하기 때문에 사용 하는 것이 좋습니다. 또한 인라인을 권장하지 않습니다.
e
또는 E
현장에서 방지 할 수는 없습니다
숫자로만 구성된 숫자를 사용 하는 가장 좋은 방법 은 다음과 같습니다.
<input type="number" onkeydown="javascript: return event.keyCode === 8 ||
event.keyCode === 46 ? true : !isNaN(Number(event.key))" />
숫자 키만 허용하려면 :
isNaN (번호 (event.key))
"백 스페이스"(키 코드 : 8) 및 "삭제"(키 코드 : 46)는 허용합니다 ...
<input type="number" onkeydown="return FilterInput(event)" onpaste="handlePaste(event)" >
function FilterInput(event) {
var keyCode = ('which' in event) ? event.which : event.keyCode;
isNotWanted = (keyCode == 69 || keyCode == 101);
return !isNotWanted;
};
function handlePaste (e) {
var clipboardData, pastedData;
// Get pasted data via clipboard API
clipboardData = e.clipboardData || window.clipboardData;
pastedData = clipboardData.getData('Text').toUpperCase();
if(pastedData.indexOf('E')>-1) {
//alert('found an E');
e.stopPropagation();
e.preventDefault();
}
};
문자 e
와 빼기 기호를 모두 숨기려면 -
다음을 수행하십시오.
onkeydown="return event.keyCode !== 69 && event.keyCode !== 189"
각도를 사용하여 e, +,-, E를 입력하도록 제한 할 수 있습니다.
<input type="number" (keypress)="numericOnly($event)"/>
numericOnly(event): boolean { // restrict e,+,-,E characters in input type number
debugger
const charCode = (event.which) ? event.which : event.keyCode;
if (charCode == 101 || charCode == 69 || charCode == 45 || charCode == 43) {
return false;
}
return true;
}
기능적으로 rinku의 답변과 동일하지만 IDE 경고 방지
numericOnly(event): boolean {
// noinspection JSDeprecatedSymbols
const charCode = (event.which) ? event.which : event.key || event.keyCode; // keyCode is deprecated but needed for some browsers
return !(charCode === 101 || charCode === 69 || charCode === 45 || charCode === 43);
}
.
일부 브라우저에서 +,-및 여러 번 입력 할 수도 있습니다 .