Saya memiliki kode berikut dalam aplikasi AngularJS, di dalam pengontrol, yang dipanggil dari fungsi ng-submit, yang termasuk dalam formulir dengan nama profileForm
:
$scope.updateProfile = function() {
if($scope.profileForm.$invalid) {
//error handling..
}
//etc.
};
Di dalam fungsi ini, adakah cara untuk mengetahui bidang mana yang menyebabkan seluruh formulir disebut tidak valid?
validation
angularjs
GSto
sumber
sumber
name
atribut input untuk melihatnya di $ name (tentu saja). Fakta bahwa AngularJS mengikat ke properti model tanpa memerlukan nama dapat menyebabkan sulitnya mendiagnosis input mana yang tidak valid.Untuk memeriksa bidang formulir mana yang tidak valid
ini akan menampilkan larik bidang yang tidak valid dari formulir
sumber
Jika Anda ingin melihat kolom mana yang mengacaukan validasi Anda dan Anda memiliki jQuery untuk membantu Anda, cukup cari kelas "ng-invalid" di konsol javascript.
Ini akan mencantumkan semua elemen DOM yang gagal validasi karena alasan apa pun.
sumber
Anda dapat mengulang
form.$error.pattern
.sumber
Ketika ada bidang yang tidak valid, jika Anda mencoba mendapatkan nilainya, itu akan menjadi
undefined
.Katakanlah Anda memiliki input teks yang dilampirkan
$scope.mynum
yang hanya valid ketika Anda mengetik angka, dan Anda telah mengetikABC
di atasnya.Jika Anda mencoba mendapatkan nilai
$scope.mynum
, itu akan menjadiundefined
; itu tidak akan mengembalikanABC
.(Mungkin Anda tahu semua ini, tapi bagaimanapun)
Jadi, saya akan menggunakan array yang memiliki semua elemen yang membutuhkan validasi yang telah saya tambahkan ke ruang lingkup dan menggunakan filter (dengan underscore.js misalnya) untuk memeriksa mana yang kembali sebagai
typeof
undefined
.Dan itu akan menjadi bidang yang menyebabkan status tidak valid.
sumber
Saya ingin menampilkan semua kesalahan di tooltip tombol Simpan yang dinonaktifkan, sehingga pengguna akan tahu mengapa menonaktifkan alih-alih menggulir ke atas dan ke bawah formulir panjang.
Catatan: ingatlah untuk menambahkan properti nama ke bidang di formulir Anda
sumber
Untuk aplikasi saya, saya menampilkan kesalahan seperti ini:
jika Anda ingin melihat semuanya, cukup pengguna 'err' yang akan menampilkan sesuatu seperti ini:
Tidak dalam format yang baik, tetapi Anda akan melihat hal-hal ini di sana ...
sumber
Jika Anda ingin menemukan bidang yang membuat formulir tidak valid pada UI tanpa terprogram, cukup klik kanan inspect (buka alat pengembang di tampilan elemen) lalu cari ng-invalid dengan ctrl + f di dalam tab ini. Kemudian untuk setiap bidang yang Anda temukan kelasnya tidak valid, Anda dapat memeriksa apakah bidang tersebut tidak diberi nilai apa pun saat diperlukan, atau aturan lain yang mungkin dilanggar (format email tidak valid, definisi di luar rentang / maks / menit, dll.) . Ini cara termudah.
sumber