我想实现一个文本框,用户只能输入字母。当用户输入数字或无效字符时,必须在附近显示错误消息。像这样:
答案 0 :(得分:9)
您可以在TextBox的KeyUpHandler上使用Character.isLetter(char)
:
textBox.addKeyUpHandler(new KeyUpHandler() {
public void onKeyUp(KeyUpEvent event) {
if (!Character.isLetter(event.getNativeKeyCode())) {
((TextBox)event.getSource()).cancelKey();
customPopup.showRelativeTo(textBox);// your styled PopupPanel
}
}
});
但是,Character.isLetter(char)
适用于ASCII,如果你想要更多,你可以这样做:
/**
* A better implementation of isLetter -- the default GWT version doesn't
* support non-English characters.
*
* @param c the character to check
* @return whether the character represents and alphabetic symbol.
*/
public static boolean isLetter(char c) {
int val = (int) c;
return inRange(val, 65, 90) || inRange(val, 97, 122) || inRange(val, 192, 687) || inRange(val, 900, 1159) ||
inRange(val, 1162, 1315) || inRange(val, 1329, 1366) || inRange(val, 1377, 1415) || inRange(val, 1425, 1610);
}
/**
* Checks if an int value is in a range.
* @param value value to check
* @param min min value
* @param max max value
* @return whether value is in the range, inclusively.
*/
public static boolean inRange(int value, int min, int max) {
return (value <= max) & (value >= min);
}
请参阅:http://code.google.com/p/google-web-toolkit/issues/detail?id=1983
答案 1 :(得分:1)
您可以在keyTyped事件上编写一些验证码来检查,输入的最后一个字母是什么。是不是数字。如果没有,则显示错误消息。
尝试考虑KeyLister
方法:keyTyped()
答案 2 :(得分:1)
您可以添加正则表达式来执行this
答案 3 :(得分:1)
Javascript允许字母字符
function AllowAlphabet(e)
{
keyEntry = !isIE ? e.which : event.keyCode;
if (((keyEntry >= '65') && (keyEntry <= '90')) || ((keyEntry >= '97') && (keyEntry <=
'122')) || (keyEntry == '46') || (keyEntry == '32') || keyEntry == '45')
return true;
}