是否有人知道如何创建可执行电话号码格式屏蔽的字段,例如此处(___) ___-____
:
http://www.smartclient.com/smartgwt/showcase/#form_masking
答案 0 :(得分:8)
更好的方法是让用户输入他们想要的任何内容:“789-555-1234”或“(789)555-1234”或“7895551234”,然后当该字段失去焦点时,决定他们输入的内容是否可以是一个电话号码。如果是这样,您可以将其重新格式化为“(789)555-1234”。有关如何使用正则表达式执行此类操作的几个相关问题;只要确保你的正则表达式接受你正在改变用户输入的格式,否则编辑会非常烦人。
举个例子,看看当你在微软标准页面设置对话框的左边距字段中输入“.5”时会发生什么:当你选中它时,它会改为“0.5”。
更新:这是GWT中的示例代码来说明。为了这个例子,假设有一个名为“phoneContainer”的元素来放置文本框.GWT没有给你完整的java.util.regex包,但它足以做到这一点:
private void reformatPhone(TextBox phoneField) {
String text = phoneField.getText();
text = text.replaceAll("\\D+", "");
if (text.length() == 10) {
phoneField.setText("(" + text.substring(0, 3) + ") " + text.substring(3, 6) + "-" + text.substring(6, 10));
}
}
public void onModuleLoad() {
final TextBox phoneField = new TextBox();
RootPanel.get("phoneContainer").add(phoneField);
phoneField.addBlurHandler(new BlurHandler(){
public void onBlur(BlurEvent event) {
reformatPhone(phoneField);
}
});
}
答案 1 :(得分:1)
看起来您想要创建自己的窗口小部件,扩展GWT输入框并将默认值设置为您想要的蒙版。然后你处理onKeypress事件并根据需要更新字段(确保将光标位置设置到正确的位置)。