Saya memiliki input dengan jenis kata sandi dengan minLength 8, dan saya memiliki sakelar untuk mengubah jenis menjadi teks (pengalihan kata sandi).
ketika saya mengetik dengan panjang <8 dan tekan kirim, itu mencegah pengiriman. tetapi, ketika saya mengganti kata sandi sehingga mengubah jenis menjadi teks dan mengirimkan formulir, itu dapat dikirimkan. btw saya menggunakan useRef()
Versi reaksi:
reaksi: ^17.0.1
reaksi-dom: ^17.0.1
Tautan ke contoh kode: DEMO
Formulir dikirim meskipun di bawah minLength
Formulir tidak dikirimkan saat di bawah minLength
Terima kasih atas laporannya.
Saya dapat melihat dua masalah:
minLength="3"
bukan 8.minLength
tidak didukung di IE 11: https://caniuse.com/input-minlengthSaya menggunakan mac os 10.14.6 dan browser Safari 13.0.5 (14608.5.12)
saya lupa sesuatu, jangan ketik karakter apa pun setelah mengaktifkannya
btw, ketika saya mencoba dengan Chrome 86.0.4240.183 berfungsi dengan baik. saya pikir itu hanya terjadi di safari
Terima kasih, saya dapat mereproduksi ini.
Umumnya validasi apa pun diabaikan jika inputnya murni. Jika Anda mengirimkan formulir tanpa mengetik apa pun, minLength
akan diabaikan.
Safari dengan benar menandai formulir sebagai tidak valid jika Anda mengetik sesuatu yang tidak melewati semua batasan. Namun, ketika type
berubah, Safari tampaknya menganggap input tersebut murni. Oleh karena itu nilai yang tidak valid dikirimkan jika type
berubah setelah pengetikan selesai.
Pertanyaannya adalah apakah React dapat atau harus memperbaiki kekhasan ini atau apakah Safari harus memperbaikinya.
Sunting:
Repro minimal tanpa reaksi apa pun: https://codesandbox.io/s/condescending-bhabha-n4374?file=/src/index.js
Jika Anda memerlukan perilaku ini, saya sarankan mengajukan bug dengan Safari.
Komentar yang paling membantu
Terima kasih, saya dapat mereproduksi ini.
Umumnya validasi apa pun diabaikan jika inputnya murni. Jika Anda mengirimkan formulir tanpa mengetik apa pun,
minLength
akan diabaikan.Safari dengan benar menandai formulir sebagai tidak valid jika Anda mengetik sesuatu yang tidak melewati semua batasan. Namun, ketika
type
berubah, Safari tampaknya menganggap input tersebut murni. Oleh karena itu nilai yang tidak valid dikirimkan jikatype
berubah setelah pengetikan selesai.Pertanyaannya adalah apakah React dapat atau harus memperbaiki kekhasan ini atau apakah Safari harus memperbaikinya.
Sunting:
Repro minimal tanpa reaksi apa pun: https://codesandbox.io/s/condescending-bhabha-n4374?file=/src/index.js
Jika Anda memerlukan perilaku ini, saya sarankan mengajukan bug dengan Safari.