DarekKay
8 Dec 2011, 6:27 AM
I have a TextField with an EmptyValidator. I want to validate it after pressing the Enter-Key, so here my code:
public void onModuleLoad()
{
VerticalLayoutContainer mainPanel = new VerticalLayoutContainer();
mainPanel.setPixelSize(500, 300);
mainPanel.setBorders(true);
final TextField validateTextField = new TextField();
validateTextField.addValidator(new EmptyValidator<String>());
final TextField dummyTextField = new TextField();
TextButton button = new TextButton("validate");
button.addSelectHandler(new SelectHandler()
{
@Override
public void onSelect(SelectEvent event)
{
validateTextField.validate();
}
});
new KeyNav(validateTextField)
{
@Override
public void onEnter(NativeEvent evt)
{
validateTextField.validate();
}
};
mainPanel.add(validateTextField, new VerticalLayoutData(1, -1));
mainPanel.add(dummyTextField, new VerticalLayoutData(1, -1));
mainPanel.add(button, new VerticalLayoutData(1, -1));
mainPanel.forceLayout();
RootLayoutPanel.get().add(mainPanel);
}
I enter my first TextField, type something, and press return => validation fails ("field is empty").
It seems like the typed text was ignored and the previous value (initially empty) is beeing validated. I know I could use the setAutoValidate() method - but I only want to validate my TextField after pressing return.
public void onModuleLoad()
{
VerticalLayoutContainer mainPanel = new VerticalLayoutContainer();
mainPanel.setPixelSize(500, 300);
mainPanel.setBorders(true);
final TextField validateTextField = new TextField();
validateTextField.addValidator(new EmptyValidator<String>());
final TextField dummyTextField = new TextField();
TextButton button = new TextButton("validate");
button.addSelectHandler(new SelectHandler()
{
@Override
public void onSelect(SelectEvent event)
{
validateTextField.validate();
}
});
new KeyNav(validateTextField)
{
@Override
public void onEnter(NativeEvent evt)
{
validateTextField.validate();
}
};
mainPanel.add(validateTextField, new VerticalLayoutData(1, -1));
mainPanel.add(dummyTextField, new VerticalLayoutData(1, -1));
mainPanel.add(button, new VerticalLayoutData(1, -1));
mainPanel.forceLayout();
RootLayoutPanel.get().add(mainPanel);
}
I enter my first TextField, type something, and press return => validation fails ("field is empty").
It seems like the typed text was ignored and the previous value (initially empty) is beeing validated. I know I could use the setAutoValidate() method - but I only want to validate my TextField after pressing return.