Wenn ein vaadin-combo-box
erforderlich ist und das vaadin-combo-box
ausgewählt wurde, aber nichts ausgewählt ist, wird das innere vaadin-text-field
beim Abwählen von vaadin-combo-box
als ungültig markiert. Wenn jedoch das erforderliche Attribut zwischenzeitlich entfernt wird, befindet sich das innere vaadin-text-field
immer noch im ungültigen Zustand.
Das Ändern von Attributen (oder zumindest des erforderlichen Attributs) auf dem vaadin-combo-box
sollte eine erneute Validierung des zugrunde liegenden vaadin-text-field
auslösen.
Das vaadin-text-field
steckt in einem ungültigen Zustand fest. Das Formular kann aufgrund dieses ungültigen Status nicht gesendet werden.
vaadin-combo-box
. Die Optionen werden angezeigt, aber wählen Sie kein Element aus (klicken Sie irgendwo in den weißen Bereich)vaadin-combo-box
wird rot gefärbt und befindet sich in einem ungültigen Zustand.vaadin-combo-box
bleiben in einem ungültigen Zustandvaadin-combo-box
vaadin-combo-box
zu leeren: Das vaadin-combo-box
ist immer noch in einem ungültigen Zustand, obwohl es nicht mehr benötigt wird.Das Ändern des ungültigen Attributs auf dem vaadin-combo-box
löst das Problem auch nicht, es sieht so aus, als ob dieser Wert nicht im inneren vaadin-text-field
widergespiegelt wird.
_Ich denke, die anderen Browser haben das gleiche Problem, ich konnte sie jedoch nicht testen_
Dies scheint stattdessen ein Fehler in vaadin-text-field
zu sein. vaadin-combo-box
synchronisiert nur die Eigenschaften required
und invalid
mit den internen vaadin-text-field
.
Ich denke, die dynamische Änderung des required
Zustands (oder anderer Validierungsbeschränkungen) wurde bei der Entwicklung der Komponente einfach nicht berücksichtigt.
Die Validierung berücksichtigt required
, pattern
, maxlength
und minlength
. Wenn einer dieser Werte festgelegt ist, wird invalid
boolesch basierend auf dem Rückgabewert von checkValidity()
auf dem nativen <input>
. Wenn keines davon festgelegt ist, können Sie invalid
basierend auf Ihrer eigenen Logik manuell auf true
oder false
und vaadin-text-field
behält den ungültigen Status bei, wie er ist eingestellt worden.
Das Problem scheint zu sein, dass, wenn Sie nur eine dieser Validierungsbeschränkungen festgelegt haben (zB required
) und das Feld validiert wurde und ungültig geworden ist, und Sie die Beschränkung dann entfernen, es nicht ausgeführt wird checkValidity()
auf der nativen Eingabe und behält den Zustand invalid
(als ob er manuell hinzugefügt worden wäre). Grundsätzlich entfernt das Textfeld den invalid
Status nie automatisch, wenn keine aktiven Validierungsbeschränkungen vorhanden sind.
Ich denke, die richtige Logik hier wäre zu beobachten, wenn eine der Einschränkungen required
, pattern
, maxlength
oder minlength
entfernt wird _und_ invalid == true
schon, dann setze this.invalid = this.inputElement.checkValidity();
Dies kann mit vaadin-text-field
reproduziert werden, indem man einfach Folgendes hat:
<vaadin-text-field required="{{tfRequired}}"></vaadin-text-field><br>
<label>Required <input type="checkbox" checked="{{tfRequired::change}}"></label>
Ich habe hier ein Problem dazu geöffnet https://github.com/vaadin/vaadin-text-field/issues/400, aber ich lasse dieses Kombinationsfeldproblem hier, um eine bessere Sichtbarkeit zu erzielen, wenn jemand anderes das Problem mit dem Kombinationsfeld bemerkt. Dies sollte geschlossen werden, nachdem das obige Textfeldproblem behoben wurde.
Dieser Fix wurde in vaadin-text-field
v2.3.9 und v2.4.10 veröffentlicht .
Ich kann bestätigen, dass es jetzt wie erwartet funktioniert. Danke für die gute Arbeit, @Haprog! 😄
Übrigens. afaik sind die WebJars für vaadin-text-field
v2.3.9 und v2.4.10 defekt, also wenn Sie diese von Java (Vaadin 10–13 oder Vaadin 14 im Kompatibilitätsmodus) verwenden müssen, müssen Sie etwas warten. Wir sollten v2.3.10 und v2.4.11 bald mit funktionierenden WebJars veröffentlichen.