单击GWT主页中的按钮

时间:2010-12-27 09:03:36

标签: gwt

我有一个简单的主机页面,用于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:

看起来我收到此错误的原因是我使用的是模式弹出式面板,并且在模式弹出窗口处于活动状态时没有注册任何点击事件。

3 个答案:

答案 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)

原因是它不起作用的原因是因为我使用的是模态弹出面板。当模态弹出面板处于活动状态时,没有注册任何点击事件(事后看来很有意义)。