У меня есть вход с типом пароля с minLength 8, и у меня есть переключатель, чтобы изменить тип на текст (переключатель пароля).
когда я набираю длину <8 и нажимаю "Отправить", это препятствует отправке. но когда я переключаю пароль, чтобы он менял тип на текст и отправлял форму, он может быть отправлен. кстати, я использую useRef ()
Версия React:
реагировать: ^ 17.0.1
реагировать-дом: ^ 17.0.1
Ссылка на пример кода: DEMO
Форма отправляется, даже если она находится под minLength
Форма не отправляется, когда она находится под minLength
Спасибо за отчет.
Я могу заметить две проблемы:
minLength="3"
не 8.minLength
не поддерживается в IE 11: https://caniuse.com/input-minlengthЯ использую mac os 10.14.6 и браузер Safari 13.0.5 (14608.5.12)
я что-то забыл, не вводите никаких символов после переключения
Кстати, когда я пытаюсь использовать Chrome 86.0.4240.183, он работает нормально. я думаю это бывает только в сафари
Спасибо, я могу воспроизвести это.
Как правило, любые проверки игнорируются, если входные данные нетронутые. Если вы отправляете форму, ничего не набирая, minLength
игнорируется.
Safari правильно помечает форму как недопустимую, если вы ввели что-то, что не соответствует всем ограничениям. Однако, когда type
изменяется, Safari, кажется, считает входные данные безупречными. Поэтому недопустимое значение отправляется, если type
изменилось после завершения ввода.
Вопрос в том, может ли React исправить эту причуду или должен ли Safari исправить это.
Редактировать:
Минимальное воспроизведение без какой-либо реакции: https://codesandbox.io/s/condescending-bhabha-n4374?file=/src/index.js
Если вам нужно такое поведение, я предлагаю зарегистрировать ошибку в Safari.
Самый полезный комментарий
Спасибо, я могу воспроизвести это.
Как правило, любые проверки игнорируются, если входные данные нетронутые. Если вы отправляете форму, ничего не набирая,
minLength
игнорируется.Safari правильно помечает форму как недопустимую, если вы ввели что-то, что не соответствует всем ограничениям. Однако, когда
type
изменяется, Safari, кажется, считает входные данные безупречными. Поэтому недопустимое значение отправляется, еслиtype
изменилось после завершения ввода.Вопрос в том, может ли React исправить эту причуду или должен ли Safari исправить это.
Редактировать:
Минимальное воспроизведение без какой-либо реакции: https://codesandbox.io/s/condescending-bhabha-n4374?file=/src/index.js
Если вам нужно такое поведение, я предлагаю зарегистрировать ошибку в Safari.