2016-12-02 83 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