【问题标题】:How to disable button when pressed in Apache Wicket在 Apache Wicket 中按下时如何禁用按钮
【发布时间】:2018-01-02 13:42:20
【问题描述】:

按下时我需要禁用此按钮。我知道一些硬编码方法,但我不想使用一些默认的 Apache Wicket 函数动态禁用。

form.add(new Button("Continue") {
    private static final long serialVersionUID = 1L;

    @Override
    public void onSubmit() {
    process();
    };
});

【问题讨论】:

  • 您尝试过使用 AjaxButton 还是需要使用“普通”按钮?
  • 我必须使用普通按钮

标签: java apache wicket


【解决方案1】:

由于这是非 Ajax 按钮(即会导致页面重新加载的按钮),您可以执行以下操作:

<button wicket:id="Continue" onclick="this.disabled='disabled'; return true">...</button>

onclick JS 事件监听器将禁用按钮并让它执行其默认行为,即提交表单。

请注意,禁用的表单元素不会与提交的数据一起发送! IE。无法知道在服务器端单击了哪个按钮。一种解决方法是在 setTimeout() 中禁用它。

如果您使用一些 JS 库进行客户端表单验证,那么您最好在其回调中执行此逻辑,因为如果值无效,您很可能希望重新启用按钮。

【讨论】:

    【解决方案2】:

    为什么不使用 Wicket Ajax Button??

    我认为你可以为按钮创建一个 ajaxUpdate :

      Button b = new Button("Continue") {
            private static final long serialVersionUID = 1L;
    
            @Override
            public void onSubmit() {
            process();
            };
        };
            b.add(new AjaxFormComponentUpdatingBehavior("onclick") {
               protected void onUpdate(AjaxRequestTarget target) {
                  b.setEnabled(false);
               });
        form.add(b);
    

    【讨论】:

      猜你喜欢
      • 2015-02-10
      • 1970-01-01
      • 2015-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多