Witam,
podczas walidacji pól formularza rejestracyjnego napotkałem pewien problem. Otóż w momencie kiedy wprowadzona wartość w danym textField'zie nie pasuje do zdefiniowanego regex'a to w danym polu ustawia się styl css błędu.
Poniżej metoda walidująca.
public void validationKeyReleased(TextField txt, String pattern, String error) {
txt.setOnKeyReleased(event -> {
if (txt.isPressed() == false) {
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(txt.getText());
if (m.find()) {
errorOut.setText("");
txt.getStyleClass().remove("errorOut");
btnRegister.setDisable(false);
} else {
btnRegister.setDisable(true);
txt.getStyleClass().add("errorOut");
errorOut.setText(error);
}
}
});
}
I przykładowa implementacja dla pola imię
private void validateImie() {
validationKeyReleased(txtImie, "^[a-zA-Z]{3,}$", "Podane imię jest nieprawidłowe");
}
Wszystko działa dobrze, jeśli pole nie spełnia warunków regex'a. Jeśli wartość jest prawidłowa to styl się nie zmienia na domyślny, a dopiero kiedy wpisze 4 znak, czyli o jeden znak więcej niż powinno się to stać. Dodam, ze kod errorOut.setText(""), który jest w tym samym warunku wykonuje się prawidłowo.
Czy ktoś mógłby mi powiedzieć gdzie leży problem ? dlaczego nie wykonuje się ten fragment kodu po wprowadzeniu poprawnych wartości ?