gpt4 book ai didi

java - 选择相同日期 GWT 后日期选择器不会关闭

转载 作者:行者123 更新时间:2023-11-30 06:25:47 28 4
gpt4 key购买 nike

我正在从 java 脚本调用 java,以使用以下方法关闭日期选择器弹出窗口。

    private native void attachInternal() /*-{+      
$wnd.jQuery("div.datePickerDay.datePickerDayIsValue").on( "Click", function() {
this.@com.booxi.admin.client.common.ui.text.DateFormatter::uiDatePickerPopup.hide();

console.log("OK");
});
}-*/;

在附加的方法中再次调用此方法。

问题是日期选择器在选择已选择的相同日期后不会关闭,但在值更改时它会关闭。即使在选择与之前相同的日期后我也想关闭它。附加方法如下

    public void attach() {
attachInternal();

datePickerValueChangeRegistration = uiDatePicker.addValueChangeHandler(new ValueChangeHandler<Date>() {
@Override
public void onValueChange(ValueChangeEvent<Date> event) {
uiDatePickerPopup.hide();
uiTextDate.setErrorVisible(false);
uiTextDate.setTextNoFormat(Moment.moment(event.getValue()).format("L"));
}
});

textDateClickRegistration = uiTextDate.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
//if (uiTextDate.isReadOnly())
// return;
if (!uiTextDate.isEnabled())
return;
showPopup();

}
});

最佳答案

有点晚了,但如果有人遇到同样的问题,也许会有所帮助。

我也犯了同样的错误。问题是,只有选择不同的值时才会触发更改事件。如果用户再次选择相同的值,则值不会更改,事件不会触发,您的代码不会执行,弹出窗口也不会隐藏。

您必须使用点击事件而不是值更改事件。然后,每次单击,即使是旧值,也会执行代码。但是,如果您只是将更改事件替换为单击事件,那么当用户单击日期选择器的标题时(例如,当他单击箭头选择不同的月份时)也会执行代码。这会破坏日期选择器的功能。

因此,在点击事件中,您必须检查点击是否确实在日期单元格中而不是在标题中。这可以通过 Element.as(event.getNativeEvent().getEventTarget()) 来完成并检查元素的内容,最简单的检查内部文本是否是 1 到 31 之间的日期数字。

所以代码是这样的

uiDatePickerPopup.addDomHandler(new ClickHandler() {

@Override
public void onClick(ClickEvent event) {
Element target = Element.as(event.getNativeEvent().getEventTarget());
String targetContent = target.getInnerText();
try {
int d = Integer.parseInt(targetContent);
if (d >= 1 && d <= 31) {
uiDatePickerPopup.hide();

...
enter the rest of your code here
...

}
} catch (Exception e) {
/* ignore, click was not on a date cell */
}
}

}, ClickEvent.getType());

(据我所知,没有更优雅的解决方案。其他可能的事件没有用,并且您不能将单击事件仅限于日期单元格,因为getView()方法是protected并且底层 CalendarViewfinal 并且不能扩展到为内容提供必要检查的子类。)

关于java - 选择相同日期 GWT 后日期选择器不会关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47230636/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com