В веб-приложении, которое мы создаем, мы столкнулись с какой-то странной ошибкой, которая возникает только в Internet Explorer.
Проверка ввода, показанная в этом plunker, отлично работает во всех браузерах, кроме IE (мы должны поддерживать IE10+). Мы используем type="number"
в наших вводах, которые ожидают числа, так как в большинстве браузеров так легко убедиться, что пользователь вводит только разрешенные символы. Мы также используем ng-pattern="/^\d+$/"
для дополнительной проверки допустимого типа чисел, плюс это единственная проверка, которая есть в IE, поскольку тип ввода не поддерживается.
Проблема в том, что проверка ввода работает почти так, как ожидалось, за исключением случаев, когда мы вводим буквы в качестве первых символов нашего ввода (например, «abb45»). Он даже не думает, что это неверный ввод! Я видел в другом потоке SO, что ввод required
на входе правильно вызовет проверку, но в нашем случае это конкретное поле вообще не является обязательным. Кроме того, даже если поле помечено как недействительное, сообщение проверки не отображается (я не уверен, откуда в этом случае возникает ошибка проверки).
Удаление type="number"
является обходным путем (это решает проблему в IE), но мы предпочли бы попытаться найти другое решение, прежде чем вносить это изменение, которое нарушило бы «гладкость» числового ввода в других браузерах.
Примечание: мы не используем jQuery (только jQuery lite, так как angular имеет его как зависимость).