Я использую Реагирует и Material-UI TextField с type='number'
, но, как я увидел, проверка довольно проста, она просто позволяет любой символ, который мог бы представлять часть числа [0-9\.eE-]*
, допуская такие вводные данные: eee---...e---0.-1
, я решил реализовать свою собственную проверку. (не уверен, является ли эта тривиальная проверка Material-UI или HTML-нативной, но все равно не имеет значения)
Итак, я написал это регулярное выражение для проверки, но как только я введу символ, который не соответствует моему регулярному выражению, обработчик событий my onChange не будет вызван вообще и кажется, что компонент берет на себя управление и применяет свою базовую проверку. Мой обработчик событий не будет вызываться снова, пока я не исправлю ввод и не сопоставлю его с моим регулярным выражением.
Можно ли как-то помешать компоненту сделать это?
onValueChange = (ev) => {
if( /^-?(\d+)?(\.\d*)?$/.test(ev.target.value)) {
this.setState({ value: ev.target.value });
}
Полный код: https://codepen.io/anon/pen/eoZOaE?editors=1000