How to limit the characters user can input in GWT TextBox widget
The code below shows a GWT widget nameField which accepts only 'A','B','1','2' characters. Moreover, if user types in '1', it will be transformed into 'A'. if '2' is typed in, 'B' will be displayed.
TextBox nameField = new TextBox();
nameField.setText("");
// Create a handler for the sendButton and nameField
class MyHandler implements KeyPressHandler {
@Override
public void onKeyPress(KeyPressEvent event) {
String ok = "AB";
if (!ok.contains(String.valueOf(event.getCharCode()))) {
nameField.cancelKey();
event.stopPropagation();
}
String Valid = "12";
if (Valid.contains(String.valueOf(event.getCharCode()))) {
switch (event.getCharCode()) {
case '1': {
Document document = nameField.getElement()
.getOwnerDocument();
NativeEvent nativeEvent = event.getNativeEvent();
NativeEvent nativeEvent2 = document
.createKeyPressEvent(nativeEvent.getCtrlKey(),
nativeEvent.getAltKey(), true,
nativeEvent.getMetaKey(), 65, 'A');
nameField.getElement().dispatchEvent(nativeEvent2);
}
break;
case '2': {
Document document = nameField.getElement()
.getOwnerDocument();
NativeEvent nativeEvent = event.getNativeEvent();
NativeEvent nativeEvent2 = document
.createKeyPressEvent(nativeEvent.getCtrlKey(),
nativeEvent.getAltKey(), true,
nativeEvent.getMetaKey(), 66, 'B');
nameField.getElement().dispatchEvent(nativeEvent2);
}
break;
}
}
}
}
// Add a handler
nameField.addKeyPressHandler(handler);
references:
- Dom Event model
http://www.howtocreate.co.uk/tutorials/javascript/domevents
-
Cancel a Keypress Event in GWT