Ketika vaadin-combo-box
diperlukan dan vaadin-combo-box
telah dipilih, tetapi tidak ada yang dipilih, vaadin-text-field
akan ditandai sebagai tidak valid saat membatalkan pilihan vaadin-combo-box
. Namun, jika atribut yang diperlukan dihapus sementara itu, bagian dalam vaadin-text-field
masih dalam status tidak valid.
Mengubah atribut (atau setidaknya atribut yang diperlukan) pada vaadin-combo-box
akan memicu validasi ulang dari vaadin-text-field
mendasarinya.
vaadin-text-field
terjebak dalam status tidak valid. Formulir tidak dapat dikirimkan karena status tidak valid ini.
vaadin-combo-box
. Opsi akan ditampilkan, tetapi jangan pilih item (klik di suatu tempat di ruang putih)vaadin-combo-box
akan berwarna merah dan dalam keadaan tidak valid.vaadin-combo-box
akan tetap dalam status tidak validvaadin-combo-box
vaadin-combo-box
: vaadin-combo-box
masih dalam keadaan tidak valid, meskipun tidak lagi diperlukan.Mengubah atribut yang tidak valid pada vaadin-combo-box
menyelesaikan masalah, sepertinya nilai ini tidak tercermin di bagian dalam vaadin-text-field
.
_Saya pikir browser lain memiliki masalah yang sama, namun saya tidak dapat mengujinya_
Ini tampaknya menjadi bug di vaadin-text-field
sebagai gantinya. vaadin-combo-box
hanya menyinkronkan properti required
dan invalid
dengan internal vaadin-text-field
.
Saya pikir mengubah status required
secara dinamis (atau batasan validasi lainnya) belum dipertimbangkan saat mengembangkan komponen.
Validasi mempertimbangkan required
, pattern
, maxlength
dan minlength
. Jika salah satu dari itu disetel, maka itu menetapkan invalid
boolean berdasarkan nilai pengembalian checkValidity()
pada <input>
. Jika tidak ada yang disetel, Anda masih dapat mengatur invalid
secara manual ke true
atau false
berdasarkan logika Anda sendiri dan vaadin-text-field
mempertahankan status tidak valid seperti sebelumnya telah ditetapkan.
Masalahnya tampaknya ketika Anda hanya memiliki satu dari batasan validasi yang ditetapkan (misalnya required
) dan bidang telah divalidasi dan menjadi tidak valid, dan kemudian Anda menghapus batasan, itu tidak berjalan checkValidity()
pada input asli lagi dan mempertahankan status invalid
(seolah-olah ditambahkan secara manual). Pada dasarnya bidang teks tidak pernah secara otomatis menghapus status invalid
ketika tidak ada batasan validasi aktif.
Saya pikir logika yang tepat di sini adalah mengamati ketika salah satu dari required
, pattern
, maxlength
atau minlength
dihilangkan _and_ invalid == true
sudah, lalu atur this.invalid = this.inputElement.checkValidity();
Ini dapat direproduksi dengan vaadin-text-field
hanya dengan memiliki:
<vaadin-text-field required="{{tfRequired}}"></vaadin-text-field><br>
<label>Required <input type="checkbox" checked="{{tfRequired::change}}"></label>
Saya membuka masalah tentang ini di sini https://github.com/vaadin/vaadin-text-field/issues/400 tapi saya akan meninggalkan masalah kotak kombo ini di sini untuk visibilitas yang lebih baik jika orang lain memperhatikan masalah dengan kotak kombo. Ini harus ditutup setelah masalah bidang teks di atas diperbaiki.
Saya dapat mengonfirmasi bahwa itu berfungsi seperti yang diharapkan sekarang. Terima kasih atas kerja bagusnya, @Haprog! 😄
Omong-omong. afaik WebJars untuk vaadin-text-field
v2.3.9 dan v2.4.10 rusak, jadi jika Anda perlu menggunakan ini dari Java (Vaadin 10–13 atau Vaadin 14 dalam mode kompatibilitas), Anda perlu menunggu sebentar. Kami harus segera merilis v2.3.10 dan v2.4.11 dengan WebJars yang berfungsi.