IE 11 не учитывает введенный номер и позволяет вводить нечисловые c значения - PullRequest
0 голосов
/ 23 марта 2020

Браузер IE 11 позволяет вводить не числовые значения c для ввода чисел. Я протестировал в других браузерах, таких как Chrome и Firefox, и они учитывают ввод числа.

Это изображение показывает, как в IE 11 пользователь может вводить запятую и буквы "gal" .

enter image description here

<div class>
    <input type="number" min="0" onkeydown="return event.keyCode !== 69" class="form-control questTxt" value="">
</div>

Не поддерживается ли числовой ввод в IE 11? Этот ресурс, кажется, показывает, что он делает? ССЫЛКА НА РЕСУРС enter image description here

Ответы [ 2 ]

1 голос
/ 25 марта 2020

Похоже, * в браузере IE 11 есть некоторые проблемы с типом ввода Number.

Вы можете обратиться к известным проблемам для браузера IE на сайте CanIuse .

В качестве обходного пути вы можете использовать эту функцию JS.

function handleKeyPress(e) {
    let newValue = e.target.value + e.key;
    if (
    // It is not a number nor a control key?
    isNaN(newValue) && 
    e.which != 8 && // backspace
    e.which != 17 && // ctrl
    newValue[0] != '-' || // minus
    // It is not a negative value?
    newValue[0] == '-' &&
    isNaN(newValue.slice(1)))
        e.preventDefault(); // Then don't write it!
}
Insert a number:
<input onKeyPress="handleKeyPress(event)"/>

Ссылка:

тип ввода = «число» не работает в IE браузере

0 голосов
/ 23 марта 2020

Как сказал epascarello, атрибут type существует для целей проверки, поэтому, если вы введете текст в числовое поле и попытаетесь отправить форму, он вас не пропустит. Я не могу сказать вам, почему это не по умолчанию для ввода число , но совместимость с браузерами была проблемой с тех пор, как браузеры существовали.

Если вы хотите, чтобы пользователь фактически не мог ничего вводить, кроме цифр, вы можете сделать это в JavaScript.

const inputField = document.querySelector("input");

inputField.addEventListener("keypress", e => {
    if (e.which > 31 && (e.which < 48 || e.which > 57)) {
        e.preventDefault();
    }
});
...