我需要在按下时禁用此按钮。我知道一些硬编码方法,但我想使用一些默认的Apache Wicket函数动态禁用。
form.add(new Button("Continue") {
private static final long serialVersionUID = 1L;
@Override
public void onSubmit() {
process();
};
});
答案 0 :(得分:0)
由于这是非Ajax按钮(即将导致重新加载页面的按钮),您可以执行以下操作:
<button wicket:id="Continue" onclick="this.disabled='disabled'; return true">...</button>
即。 onclick JS事件监听器将禁用该按钮并让它执行默认行为,即提交表单。
请注意,禁用的表单元素不会随提交的数据一起发送!即无法知道在服务器端单击了哪个按钮。解决方法是在setTimeout()
中禁用它。
如果您使用某个JS库进行客户端表单验证,那么最好在其回调中执行此逻辑,因为如果值无效,您可能希望重新启用该按钮。
答案 1 :(得分:0)
为什么你不使用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);