将焦点设置为gwtbootstrap3模式中的输入
在对话框显示之前,我想在对话框(将焦点设置为gwtbootstrap3模式中的输入,gwt,twitter-bootstrap-3,gwtbootstrap3,Gwt,Twitter Bootstrap 3,Gwtbootstrap3,在对话框显示之前,我想在对话框(org.gwtbootstrap3.client.ui.Input)中将焦点设置为某个字段(org.gwtbootstrap3.client.ui.Modal)。如果您有一个带有单个字段的对话框,比如上传文本或添加提要对话框,那么用例似乎非常常见。但是,我不知道如何将焦点设置到这个特定组件 Input组件有一个setFocus(true)方法。我假设在显示对话框之前设置焦点不起作用,但事实并非如此。因此,合乎逻辑的解决方案是将方法调用放在ScheduledComm
org.gwtbootstrap3.client.ui.Input
)中将焦点设置为某个字段(org.gwtbootstrap3.client.ui.Modal
)。如果您有一个带有单个字段的对话框,比如上传文本或添加提要对话框,那么用例似乎非常常见。但是,我不知道如何将焦点设置到这个特定组件
Input
组件有一个setFocus(true)
方法。我假设在显示对话框之前设置焦点不起作用,但事实并非如此。因此,合乎逻辑的解决方案是将方法调用放在ScheduledCommand
中。像这样:
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
textField.setFocus(true);
}
});
modal.addShowHandler(new ModalShowHandler() {
@Override
public void onShow(ModalShowEvent evt) {
textField.setFocus(true);
}
});
这通常适用于GWT标准组件,但在这种情况下似乎没有帮助。我找到了一种通过ModalShowHandler
显示对话框后获得通知的方法。像这样:
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
textField.setFocus(true);
}
});
modal.addShowHandler(new ModalShowHandler() {
@Override
public void onShow(ModalShowEvent evt) {
textField.setFocus(true);
}
});
我甚至尝试将两者结合起来,在句柄中添加一个延迟调用。不走运。有什么想法吗?你应该听
模块shownevent
(注意:显示的是,而不是显示的是)
ModalShowEvent
在请求(例如,以编程方式)显示模式时被激发
modalshownent
在实际显示模式时被激发
这种有点混乱的命名基于本机事件:show.bs.modal
和show.bs.modal
ModalShownEvent
与通常的Scheduler#schedulederferred
相结合应该可以达到这个目的。工作起来很有魅力。即使没有延迟通话。