2016-12-02 27 views
0

要求:在模糊/表单提交上遮盖日期选择器。GWTBootstrap - 遮罩日期选择器

我能够在forceparse设置为false的情况下在Blur上完成遮罩,但我无法导航到datepicker中的下一个月/年,可能是因为我重写了DOM处理程序。

dob.setForceParse(false); 
dob.addDomHandler(new BlurHandler() {   
    @Override 
    public void onBlur(BlurEvent event) {    
     dob.getTextBox().setText(**masked value**); 
    } 
}, BlurEvent.getType()); 
dob.addDomHandler(new FocusHandler() {   
    @Override 
    public void onFocus(FocusEvent event) { 
     dob.setValue(**unmasked value**); 
    } 
}, FocusEvent.getType()); 

我无法使用ChangeDateHandler,因为它会自动假设“19年1月1日”为“1/1/1900”和口罩文本的文本中途进入。有没有其他办法可以处理这个问题?

回答

0

如果您在使用DatePickerTextBox时遇到问题,您可以隐藏它并使用其他任何Widget代替。

TextBox基本上用于显示关注时的DatePicker,以显示选定的日期并手动输入日期。

下面是一个例子代码是如何使用自己的TextBoxDatePicker(我用VerticalPanel只是TextBox下方显示DatePicker):

VerticalPanel container = new VerticalPanel(); 

final DatePicker dob = new DatePicker(); 

// hide DatePicker's TextBox 
dob.getTextBox().getElement().getStyle().setDisplay(Display.NONE); 

final TextBox box = new TextBox(); 
box.addFocusHandler(new FocusHandler() { 
    @Override 
    public void onFocus(FocusEvent event) { 
     dob.show(); 
     box.setText("**unmasked value**"); 
    } 
}); 

dob.addHideHandler(new HideHandler() { 
    @Override 
    public void onHide(HideEvent hideEvent) { 
     box.setText("**masked value**"); 
    } 
}); 

dob.addChangeDateHandler(new ChangeDateHandler() { 
    @Override 
    public void onChangeDate(ChangeDateEvent evt) { 
     Window.alert("ChangeDateEvent"); 
    } 
}); 

container.add(box); 
container.add(dob); 

只是通知,你需要调用dob.show()TextBox集中。我还使用DatePickerHideHandler而不是TextBoxBlurHandler显示蒙面值,但您可以根据需要更改它。

如果您想更改解析日期的方式,如"1/1/19",现在您可以将自己的解析器添加到TextBox