عندما يكون vaadin-combo-box
مطلوبًا وتم تحديد vaadin-combo-box
، ولكن لم يتم اختيار أي شيء ، سيتم تمييز vaadin-text-field
الداخلي على أنه غير صالح عند إلغاء تحديد vaadin-combo-box
. ومع ذلك ، إذا تمت إزالة السمة المطلوبة في هذه الأثناء ، فإن vaadin-text-field
الداخلي لا يزال في حالة غير صالحة.
يجب أن يؤدي تغيير السمات (أو على الأقل السمة المطلوبة) في vaadin-combo-box
إلى إعادة التحقق من vaadin-text-field
.
vaadin-text-field
عالق في حالة غير صالحة. لا يمكن إرسال النموذج بسبب هذه الحالة غير الصالحة.
vaadin-combo-box
. سيتم عرض الخيارات ، لكن لا تحدد عنصرًا (انقر في مكان ما في المساحة البيضاء)vaadin-combo-box
باللون الأحمر ويكون في حالة غير صالحة.vaadin-combo-box
في حالة غير صالحةvaadin-combo-box
vaadin-combo-box
: لا يزال vaadin-combo-box
في حالة غير صالحة ، على الرغم من أنه لم يعد مطلوبًا.لا يؤدي تغيير السمة غير الصالحة في vaadin-combo-box
حل المشكلة أيضًا ، يبدو أن هذه القيمة لا تنعكس في vaadin-text-field
الداخلي.
_ أعتقد أن المتصفحات الأخرى بها نفس المشكلة ، ولكن لم أتمكن من اختبارها_
يبدو أن هذا خطأ في vaadin-text-field
بدلاً من ذلك. vaadin-combo-box
فقط بمزامنة الخصائص required
و invalid
مع الخصائص vaadin-text-field
.
أعتقد أن التغيير الديناميكي لحالة required
(أو قيود التحقق الأخرى) لم يتم أخذه في الاعتبار عند تطوير المكون.
يعتبر التحقق من الصحة required
و pattern
و maxlength
و minlength
. إذا تم تعيين أي من هذه العناصر ، فإنه يقوم بتعيين invalid
منطقيًا استنادًا إلى قيمة الإرجاع checkValidity()
على الأصل <input>
. إذا لم يتم تعيين أي من هؤلاء ، فلا يزال بإمكانك تعيين invalid
يدويًا إلى true
أو false
بناءً على منطقك الخاص و vaadin-text-field
يحتفظ بالحالة غير الصالحة كما هي تم تعيينه.
يبدو أن المشكلة هي أنه عندما يكون لديك واحد فقط من قيود التحقق هذه (على سبيل المثال required
) وتم التحقق من صحة الحقل وأصبح غير صالح ، ثم قمت بإزالة القيد ، فلن يتم تشغيل checkValidity()
على الإدخال الأصلي بعد الآن ويحتفظ بالحالة invalid
(كما لو تمت إضافته يدويًا). بشكل أساسي ، لا يزيل حقل النص تلقائيًا الحالة invalid
عند عدم وجود قيود فعالة للتحقق من الصحة.
أعتقد أن المنطق الصحيح هنا هو الملاحظة عند إزالة أي قيود من قيود required
أو pattern
أو maxlength
أو minlength
_ و_ invalid == true
بالفعل ، ثم قم بتعيين this.invalid = this.inputElement.checkValidity();
يمكن إعادة إنتاج هذا بـ vaadin-text-field
فقط من خلال:
<vaadin-text-field required="{{tfRequired}}"></vaadin-text-field><br>
<label>Required <input type="checkbox" checked="{{tfRequired::change}}"></label>
لقد فتحت مشكلة حول هذا هنا https://github.com/vaadin/vaadin-text-field/issues/400 لكنني سأترك مشكلة مربع التحرير والسرد هذه هنا للحصول على رؤية أفضل إذا لاحظ شخص آخر المشكلة في مربع التحرير والسرد. يجب إغلاق هذا بعد إصلاح مشكلة حقل النص أعلاه.
أستطيع أن أؤكد أنه يعمل كما هو متوقع الآن. شكرا على العمل الجيد ،Haprog! 😄
بالمناسبة. تم كسر afaik the WebJars مقابل vaadin-text-field
v2.3.9 و v2.4.10 ، لذلك إذا كنت بحاجة إلى استخدام هذه من Java (Vaadin 10–13 أو Vaadin 14 في وضع التوافق) ، فأنت بحاجة إلى الانتظار قليلاً. يجب أن نصدر v2.3.10 و v2.4.11 قريبًا مع WebJars العاملة.