将焦点设置到 gwtbootstrap3 模式中的输入
Set focus to an Input in a gwtbootstrap3 Modal
我想在对话框 (org.gwtbootstrap3.client.ui.Modal
) 出现之前将焦点设置到对话框 (org.gwtbootstrap3.client.ui.Input
) 中的某个字段。这个用例似乎很常见,如果你有一个像 Upload text 或 Add feed dialogs right here. However I could not figure out how to set the focus to this particular gwtbootstrap3 组件这样的单个字段的对话框.
Input
组件确实有一个 setFocus(true)
方法。我认为在显示对话框之前设置焦点是行不通的,但事实并非如此。所以合乎逻辑的解决方案是将方法调用放在 ScheduledCommand
中。像这样:
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
textField.setFocus(true);
}
});
这通常适用于 GWT 标准组件,但在这种情况下似乎没有帮助。我找到了一种在通过 ModalShowHandler
显示对话框后获得通知的方法。像这样:
modal.addShowHandler(new ModalShowHandler() {
@Override
public void onShow(ModalShowEvent evt) {
textField.setFocus(true);
}
});
我什至尝试将两者结合起来,向句柄添加延迟调用。没有运气。有什么想法吗?
您应该在 ModalShownEvent
上收听(注意:Shown
,而不是 Show
)。
ModalShowEvent
在请求(例如,以编程方式)显示模态时触发。
ModalShownEvent
在模式实际显示时触发。
这个有点混乱的命名是基于原生Bootstrap Modal's events的事件:show.bs.modal
和shown.bs.modal
。
ModalShownEvent
结合通常的 Scheduler#scheduleDeferred
应该可以解决问题。
我想在对话框 (org.gwtbootstrap3.client.ui.Modal
) 出现之前将焦点设置到对话框 (org.gwtbootstrap3.client.ui.Input
) 中的某个字段。这个用例似乎很常见,如果你有一个像 Upload text 或 Add feed dialogs right here. However I could not figure out how to set the focus to this particular gwtbootstrap3 组件这样的单个字段的对话框.
Input
组件确实有一个 setFocus(true)
方法。我认为在显示对话框之前设置焦点是行不通的,但事实并非如此。所以合乎逻辑的解决方案是将方法调用放在 ScheduledCommand
中。像这样:
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
textField.setFocus(true);
}
});
这通常适用于 GWT 标准组件,但在这种情况下似乎没有帮助。我找到了一种在通过 ModalShowHandler
显示对话框后获得通知的方法。像这样:
modal.addShowHandler(new ModalShowHandler() {
@Override
public void onShow(ModalShowEvent evt) {
textField.setFocus(true);
}
});
我什至尝试将两者结合起来,向句柄添加延迟调用。没有运气。有什么想法吗?
您应该在 ModalShownEvent
上收听(注意:Shown
,而不是 Show
)。
ModalShowEvent
在请求(例如,以编程方式)显示模态时触发。
ModalShownEvent
在模式实际显示时触发。
这个有点混乱的命名是基于原生Bootstrap Modal's events的事件:show.bs.modal
和shown.bs.modal
。
ModalShownEvent
结合通常的 Scheduler#scheduleDeferred
应该可以解决问题。