要求:在模糊/表单提交上屏蔽日期选择器。
我能够使用forceparse设置为false来完成对Blur的屏蔽,但是我无法导航到datepicker中的下个月/年,可能因为我正在覆盖DOM处理程序。
Private Sub Example()
Dim a(3) As Variant 'An array
Set wbk = ActiveWorkbook
a(1) = "MySheet1"
a(2) = "MySheet2"
a(3) = "MySheet3"
For i = 1 To 3
Set wks = wbk.Sheets(a(i)) 'This line is key to what you want to achieve
wks.Cells(1, 1) = "Hi, you're in sheet number " & i & " and is named " & a(i)
Next
End Sub
我无法使用ChangeDateHandler,因为它会自动将“1/1/19”假定为“1/1/1900”并屏蔽文本输入的中间文本。还有其他办法可以解决这个问题吗?
答案 0 :(得分:0)
如果您遇到DatePicker
TextBox
的问题,可以隐藏它并使用任何其他Widget。
TextBox主要用于显示焦点时的DatePicker
,以显示所选日期并手动输入日期。
以下是如何使用您自己的TextBox
和DatePicker
的示例代码(我使用VerticalPanel
在DatePicker
下方显示TextBox
:< / p>
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
。我还使用DatePicker
的{{1}}而不是HideHandler
的{{1}}来显示屏蔽值,但您可以根据需要更改它。
如果您想更改解析TextBox
等日期的方式,现在可以将自己的解析器添加到BlurHandler
。