Programming

"숫자"유형의 html 입력이 필드에 문자 'e'를 입력 할 수있는 이유는 무엇입니까?

procodes 2020. 5. 13. 21:02
반응형

"숫자"유형의 html 입력이 필드에 문자 'e'를 입력 할 수있는 이유는 무엇입니까?


다음 html5 입력 요소가 있습니다.

<input type="number">

이 입력으로 문자 'e'를 입력 필드에 입력 할 수있는 이유는 무엇입니까? 다른 알파벳 문자를 입력 할 수 없습니다 (예상대로)

크롬 사용하기 44.0.2403.107

무슨 뜻인지 확인하려면 : http://www.w3schools.com/html/tryit.asp?filename=tryhtml_input_number


그것이 정확히 스펙 이 작동한다고 말하는 방식이기 때문 입니다. 숫자 입력은 음수 기호 및 또는 문자를 포함하여 부동 소수점 숫자를 사용할 수 있습니다 (여기서 지수는 또는 뒤에있는 숫자 임).eEeE

부동 소수점 숫자는 정확히 다음 순서로 다음과 같은 부분으로 구성됩니다.

  1. 선택적으로, 첫 번째 문자는 " -"문자 일 수 있습니다 .
  2. " 0—9" 범위에있는 하나 이상의 문자
  3. 선택적으로 다음 부분은 정확히 다음 순서로 수행됩니다.
    1. " ."문자
    2. " 0—9" 범위에있는 하나 이상의 문자
  4. 선택적으로 다음 부분은 정확히 다음 순서로 수행됩니다.
    1. " e"문자 또는 " E"문자
    2. 선택적으로 " -"문자 또는 " +"문자
    3. " 0—9" 범위에있는 하나 이상의 문자

아래와 같이 간단하게 만들 수 있습니다

<input type="number"  onkeydown="javascript: return event.keyCode == 69 ? false : true" />

업데이트 된 답변

@ 88 MPG가 제안한대로 더욱 간단하게 만들 수 있습니다

<input type="number" onkeydown="return event.keyCode !== 69" />


"e"는 숫자 기호 인 지수를 나타내므로 HTML 입력 숫자 유형은 "e / E"를 허용합니다.

예 200000은 2e5로 쓸 수도 있습니다. 이것이 질문에 감사하는 데 도움이되기를 바랍니다.          


<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();
    }
};

숫자로만 구성된 숫자를 사용하는 가장 좋은 방법은 다음과 같습니다.

<input type="number" onkeydown="javascript: return event.keyCode === 8 || event.keyCode === 46 ? true : !isNaN(Number(event.key))" />

이것은 'e', ​​'-', '+', '.'를 피합니다. ... 숫자가 아닌 모든 문자!

숫자 키만 허용하려면 :

isNaN (번호 (event.key))

"백 스페이스"(키 코드 : 8) 및 "삭제"(키 코드 : 46)는 허용합니다 ...


문자 e와 빼기 기호를 모두 숨기려면 -다음을 수행하십시오.

onkeydown="return event.keyCode !== 69 && event.keyCode !== 189"

참고 URL : https://stackoverflow.com/questions/31706611/why-does-the-html-input-with-type-number-allow-the-letter-e-to-be-entered-in

반응형