Apakah ada cara untuk meminta entri dalam dua bidang formulir agar cocok menggunakan HTML5? Atau apakah ini masih harus dilakukan dengan javascript? Misalnya, jika Anda memiliki dua bidang sandi dan ingin memastikan bahwa pengguna telah memasukkan data yang sama di setiap bidang, apakah ada beberapa atribut, atau pengkodean lain yang dapat dilakukan, untuk melakukannya?
98
Jawaban:
Tidak persis dengan validasi HTML5 tetapi sedikit JavaScript dapat menyelesaikan masalah, ikuti contoh di bawah ini:
sumber
oninput="check(this)"
ke bidang kata sandi pertama, dan 2) mengubahinput.value
fungsi menjadidocument.getElementById('password_confirm').value
. Jadi itu menjadiif (document.getElementById('password_confirm').value != document.getElementById('password').value)
Anda bisa dengan ekspresi reguler Pola Masukan (periksa kompatibilitas browser )
sumber
pattern
atribut harus dihilangkan untukpassword_two
bidang tersebut. Seperti saat ini, jika Anda mengetik kata sandi, yang lebih pendek dari 6 karakter ke dalampassword_two
bidang, sementara dibiarkanpassword
kosong - itu akan menampilkanPlease enter the same Password as above
pesan validasi. Apa yang mungkin lebih membingungkan: hal yang sama terjadi jika Anda memasukkan kedua bidang sandi yang sama persis, yang lebih pendek dari 6 karakter.Solusi sederhana dengan javascript minimal adalah menggunakan pola atribut html (didukung oleh sebagian besar browser modern). Ini bekerja dengan mengatur pola bidang kedua ke nilai bidang pertama.
Sayangnya, Anda juga perlu keluar dari regex, yang tidak memiliki fungsi standar.
sumber
<input type="password" name="password" oninput="document.getElementById('confirm').pattern = this.value.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&')" required><input type="password" id="confirm" name="confirm" pattern="" title="Fields must match" required>
Tidak dapat dibaca seperti milik Anda, tetapi menghindari skrip / fungsi yang terpisah.JavaScript akan diperlukan, tetapi jumlah kode dapat ditekan seminimal mungkin dengan menggunakan
<output>
elemen perantara danoninput
penangan formulir untuk melakukan perbandingan (pola dan validasi dapat meningkatkan solusi ini, tetapi tidak ditampilkan di sini demi kesederhanaan):sumber
Tidak hanya HTML5 tetapi sedikit JavaScript.
Klik [di sini] https://codepen.io/diegoleme/pen/surIK
HTML
JAVASCRIPT
sumber
Jawaban yang menggunakan pola dan ekspresi reguler menulis sandi pengguna ke dalam properti input sebagai teks biasa
pattern='mypassword'
. Ini hanya akan terlihat jika alat pengembang terbuka tetapi sepertinya masih bukan ide yang bagus.Masalah lain dengan menggunakan pola untuk memeriksa kecocokan adalah bahwa Anda mungkin ingin menggunakan pola untuk memeriksa apakah kata sandi dalam bentuk yang benar, misalnya huruf dan angka campuran.
Saya juga berpikir metode ini tidak akan berfungsi dengan baik jika pengguna beralih di antara input.
Inilah solusi saya yang menggunakan sedikit lebih banyak JavaScript tetapi melakukan pemeriksaan kesetaraan sederhana ketika salah satu input diperbarui dan kemudian menetapkan validitas HTML khusus. Kedua masukan tersebut masih dapat diuji untuk pola seperti format email atau kerumitan kata sandi.
Untuk halaman nyata Anda akan mengubah jenis masukan menjadi 'kata sandi'.
sumber
Seperti yang telah disebutkan dalam jawaban lain, tidak ada cara HTML5 murni untuk melakukan ini.
Jika Anda sudah menggunakan JQuery , ini harus melakukan apa yang Anda butuhkan:
sumber