我有一个简单的主机页面,用于GWT应用程序,输入按钮如下:
<input id="Save" class="button" type="submit" name="Button" value="Save" />
为什么以下不起作用:
InputElement save = InputElement.as(RootPanel.get("Save").getElement());
save.click();
如果我放置一个断点,我可以看到Save元素已正确分配,但click似乎永远不会起作用。永远不会执行该按钮的任何onclick处理程序,并且永远不会发布按钮所在的表单,但如果我手动单击该按钮,它将正常工作。
修改 请注意,我已经定义了onclick,正如我所提到的,当我手动点击提交按钮时正确调用onclick。我只是想从GWT“点击”提交按钮并发生相同的事情(onclick或表单发布)。
SOLUTION:
看起来我收到此错误的原因是我使用的是模式弹出式面板,并且在模式弹出窗口处于活动状态时没有注册任何点击事件。
答案 0 :(得分:1)
<input id="Save" class="button" type="submit" name="Button" value="Save" onclick="alert('test')"/>
嗯,在调用click方法时执行onclick ...
编辑: 如果要将click处理程序添加到此按钮,则应将其定义为按钮而不是输入..
<button id="save" class="button" type="button" name="save" />
您可以添加点击处理程序,如下面的代码;
ButtonElement save = ButtonElement.as(RootPanel.get("save").getElement());
final Button bt = Button.wrap(save);
bt.setText("save");
bt.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event) {
bt.setEnabled(false);
}
});
答案 1 :(得分:1)
Folowing代码工作正常。您可以提交onclick="{SUBMIT_SCRIPT}";
<input id="Save" class="button" type="submit" onclick="alert('Hello');" name="Button" value="Save" />
InputElement save = InputElement.as(RootPanel.get("Save").getElement());
save.click();
计划程序示例;
InputElement save = InputElement.as(RootPanel.get("Save").getElement());
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
save.click();
}
});
答案 2 :(得分:0)
原因是它不起作用的原因是因为我使用的是模态弹出面板。当模态弹出面板处于活动状态时,没有注册任何点击事件(事后看来很有意义)。