Почему ввод html с типом «число» позволяет ввести букву «e» в поле?

У меня есть следующий элемент ввода html5:

 

Почему этот вход позволяет ввести символ «e» в поле ввода? Никакой другой символ алфавита не может быть введен (как и ожидалось)

Использование chrome v. 44.0.2403.107

Чтобы увидеть, что я имею в виду: http://www.w3schools.com/html/tryit.asp?filename=tryhtml_input_number

Потому что именно так спецификация говорит, что она должна работать. Ввод номера может принимать номера с плавающей запятой , включая отрицательные символы и символ e или E :

Число с плавающей запятой состоит из следующих частей в точно следующем порядке:

  1. Необязательно, первый символ может быть символом « - ».
  2. Один или несколько символов в диапазоне « 0—9 ».
  3. Необязательно, следующие части, в точно следующем порядке:
    1. символ ” .
    2. один или несколько символов в диапазоне « 0—9 »
  4. Необязательно, следующие части, в точно следующем порядке:
    1. символ ” e ” или символ ” E
    2. необязательно, символ « - » или « + »
    3. Один или несколько символов в диапазоне « 0—9 ».

Мы можем сделать это так просто, как показано ниже.

  

Тип входного номера HTML позволяет «e / E», потому что «e» обозначает экспоненту, которая является числовым символом.

Пример 200000 также может быть записан как 2e5. Надеюсь, это поможет вам поблагодарить вас за этот вопрос.

  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(); } }; 
  • Извлечь («получить») число из строки
  • Печатать ведущие нули с оператором вывода C ++?
  • Interesting Posts
    Давайте будем гением компьютера.