Wicket ajax 控件更新行为重叠
Wicket ajax controls update bahaviours are overlapped
我在 TextField 和 AjaxButton 上有两个 Wicket Ajax 更新行为。
textField.add(AjaxFormComponentUpdatingBehavior("onchange") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
onTextFieldUpdate();
}
});
ajaxButton = new AjaxButton("accept"){
@Override
protected void onSubmit(AjaxRequestTarget target, Form form) {
onAjaxSubmited();
}
});
我有 2 个进程:
- 将值设置为 textField 并单击另一个组件而不是 ajaxButton:调用 onTextFieldUpdate()
- value 到 textField 并单击 ajaxButton:调用 onTextFieldUpdate() 和 onAjaxSubmited()。 onTextFieldUpdate() 在 onAjaxSubmited().
之前调用
我需要第二个进程的解决方法,只调用 onAjaxSubmited(),而不调用 onTextFieldUpdate()。
尝试使用 document.activeElement,但没有帮助。
有什么想法吗?
如果我理解正确,那么你想要的只是有条件地执行你在文本字段 onchange 中所做的代码。或者您可以在 onchange 中设置一些标志并使用它来控制按钮提交中的内容。
只是我的意见;试图阻止按钮单击时的更改行为似乎令人困惑。从设计的角度来看,似乎控制流需要在您对文本字段进行任何操作之前。
您可以对 AjaxFormComponentUpdatingBehavior 和 AjaxButton 使用 AjaxRequestAttributes。参见 http://wicketinaction.com/2012/07/wicket-6-javascript-improvements/。
我的想法是:
- 行为:attributes.setThrottleSettings(几毫秒)。这样 'change' 事件将在 'some millis'
之后触发
- 按钮:attributes.getAjaxCallListeners().add(new AjaxCallListener().onBeforeSend("$('#txtField').data('suppress', true)"))
- 行为:attributes.getAjaxCallListeners().add(new AjaxCallListener().onPrecondition("return $('#txtField').data('suppress')"))
希望你关注我。有关详细信息,请参阅 https://ci.apache.org/projects/wicket/guide/7.x/guide/ajax.html#ajax_5。
我在 TextField 和 AjaxButton 上有两个 Wicket Ajax 更新行为。
textField.add(AjaxFormComponentUpdatingBehavior("onchange") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
onTextFieldUpdate();
}
});
ajaxButton = new AjaxButton("accept"){
@Override
protected void onSubmit(AjaxRequestTarget target, Form form) {
onAjaxSubmited();
}
});
我有 2 个进程:
- 将值设置为 textField 并单击另一个组件而不是 ajaxButton:调用 onTextFieldUpdate()
- value 到 textField 并单击 ajaxButton:调用 onTextFieldUpdate() 和 onAjaxSubmited()。 onTextFieldUpdate() 在 onAjaxSubmited().
之前调用 我需要第二个进程的解决方法,只调用 onAjaxSubmited(),而不调用 onTextFieldUpdate()。
尝试使用 document.activeElement,但没有帮助。
有什么想法吗?
如果我理解正确,那么你想要的只是有条件地执行你在文本字段 onchange 中所做的代码。或者您可以在 onchange 中设置一些标志并使用它来控制按钮提交中的内容。
只是我的意见;试图阻止按钮单击时的更改行为似乎令人困惑。从设计的角度来看,似乎控制流需要在您对文本字段进行任何操作之前。
您可以对 AjaxFormComponentUpdatingBehavior 和 AjaxButton 使用 AjaxRequestAttributes。参见 http://wicketinaction.com/2012/07/wicket-6-javascript-improvements/。
我的想法是:
- 行为:attributes.setThrottleSettings(几毫秒)。这样 'change' 事件将在 'some millis' 之后触发
- 按钮:attributes.getAjaxCallListeners().add(new AjaxCallListener().onBeforeSend("$('#txtField').data('suppress', true)"))
- 行为:attributes.getAjaxCallListeners().add(new AjaxCallListener().onPrecondition("return $('#txtField').data('suppress')"))
希望你关注我。有关详细信息,请参阅 https://ci.apache.org/projects/wicket/guide/7.x/guide/ajax.html#ajax_5。