从GWT单击主机页中的按钮

从GWT单击主机页中的按钮,gwt,Gwt,我有一个简单的GWT应用程序主页,上面有一个输入按钮,如下所示: <input id="Save" class="button" type="submit" name="Button" value="Save" /> 如果我放置一个断点,我可以看到Save元素的分配是正确的,但是单击似乎永远不会起作用。该按钮的任何onclick处理程序都不会被执行,并且该按钮所在的表单也不会被发布,尽管如果我手动单击该按钮,它可以正常工作 编辑: 请注意,我已经定义了onclick,正如我提到的,

我有一个简单的GWT应用程序主页,上面有一个输入按钮,如下所示:

<input id="Save" class="button" type="submit" name="Button" value="Save" />
如果我放置一个断点,我可以看到Save元素的分配是正确的,但是单击似乎永远不会起作用。该按钮的任何onclick处理程序都不会被执行,并且该按钮所在的表单也不会被发布,尽管如果我手动单击该按钮,它可以正常工作

编辑: 请注意,我已经定义了onclick,正如我提到的,当我手动单击submit按钮时,onclick被正确调用。我只想从GWT中“单击”提交按钮,并让同样的事情发生(onclick或formpost)

解决方案:


看起来我出现此错误的原因是我使用的是模式弹出面板,并且在模式弹出处于活动状态时未注册任何单击事件。

以下代码工作正常。可能您可以像
onclick=“{submit\u SCRIPT}”这样提交表单

<input id="Save" class="button" type="submit" name="Button" value="Save"  onclick="alert('test')"/>
调度器示例

InputElement save = InputElement.as(RootPanel.get("Save").getElement());
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
    @Override
    public void execute() { 
        save.click();
    }
});

下面的代码运行良好。可能您可以像
onclick=“{submit\u SCRIPT}”这样提交表单

调度器示例

InputElement save = InputElement.as(RootPanel.get("Save").getElement());
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
    @Override
    public void execute() { 
        save.click();
    }
});

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

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

我已经在按钮上定义了一个单击处理程序(通过javascript)。我只想通过编程“单击”按钮。通过编程,我调用了此按钮的“单击”按钮。我放了另一个按钮,我在另一个按钮的onclick方法调用了这个按钮的click方法..谢谢,看起来我在做测试时遇到了一些奇怪的问题。我在一个新项目中尝试了同样的方法,但效果很好。我很好奇是否可以将GWT click处理程序绑定到button元素,而不将其包装到GWT button中?我已经在按钮上定义了一个click处理程序(通过javascript)。我只想通过编程“单击”按钮。通过编程,我调用了此按钮的“单击”按钮。我放了另一个按钮,我在另一个按钮的onclick方法调用了这个按钮的click方法..谢谢,看起来我在做测试时遇到了一些奇怪的问题。我在一个新项目中尝试了同样的方法,效果很好。我很好奇是否可以将GWT click处理程序绑定到button元素,而不将其包装到GWT button中?我确实定义了onclick,当我用鼠标单击按钮时,它会完美执行。
save.click()
不起作用,既没有调用onclick,也没有发布表单。I)在我的示例javascript警报中显示,这意味着save.click起作用。或者,你可以试试调度器,也许它对你有用。谢谢,看起来我在做测试时遇到了一些奇怪的问题。我在一个新项目中尝试了同样的方法,效果很好。我确实定义了onclick,当我用鼠标点击按钮时,它可以完美地执行。
save.click()
不起作用,既没有调用onclick,也没有发布表单。I)在我的示例javascript警报中显示,这意味着save.click起作用。或者,你可以试试调度器,也许它对你有用。谢谢,看起来我在做测试时遇到了一些奇怪的问题。我在一个新项目中尝试了同样的方法,效果很好。
 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);

          }
    });
<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();
    }
});