Events ZK如何处理多个事件?

Events ZK如何处理多个事件?,events,zk,Events,Zk,我有一个文本框和一个监听两个事件的方法 <textbox id="test" /> @Listen("onOK = #test; onBlur = #test") public void action(Event event) { // do something ... } @听(“onOK=#test;onBlur=#test”) 公共无效行动(事件){ //做点什么。。。 } 当我在文本框上按Enter键时,会触发事件“onOK”。没关系。 但是当我从Texbox中失

我有一个文本框和一个监听两个事件的方法

<textbox id="test" />

@Listen("onOK = #test; onBlur = #test")
public void action(Event event) {
  // do something ...
}

@听(“onOK=#test;onBlur=#test”)
公共无效行动(事件){
//做点什么。。。
}
当我在文本框上按Enter键时,会触发事件“onOK”。没关系。 但是当我从Texbox中失去焦点时,事件“onBlur”也会被触发。这很糟糕,因为在这种情况下,我的方法“action”被调用了两次。
如何取消第二个事件?

如果文本框失去焦点时不需要触发事件,则必须删除
onBlur
部分:

@Listen("onOK = #test")
public void action(Event event) {
    // do something ...
}

这是因为在您的代码中,您使用的是Anotion
@listen
,每当id=“test”文本框中出现以下任何事件时:一个
onOk
onBlur
(当焦点丢失时触发),就会执行方法
action

更新

现在,如果您需要文本框触发一个带有
onOK
的事件,但在失去焦点(
onBlur
)时会触发另一个事件,那么显然您需要两种不同的方法,并将
listen
标记同时放在这两者中,但它有自己的行为和条件,如下所示:

@Listen("onOK = #test")
public void action(Event event) {
    // do something when Ok...
}

@Listen("onBlur = #test")
public void anotherAction(Event event) {
    // do something when loses focus...
}

您可以将任何事件转发到另一个事件:

但是有一些解释:
在zul中:

<textbox id="test" forward="onOK=test.onBlur"/>
现在我们只听onBlur,因为onOK被转发到onBlur。

这对你的案子有帮助吗,还没有。

不调用事件=>不可能,如果您声明它,它将被触发。
但你如何处理你的情况:

将字符串保存在编写器中,并用新值检查它。
如果相等=>则事件已经触发,或者没有更改。

如果不相等=>做你的事情。

我需要这两个事件
onOK
onBlur
。他们必须调用一个方法(使用相同的操作)。当我在
文本框中键入内容,然后失去焦点时,会触发事件
onBlur
。没关系!但是当我第一次按Enter键时,
onOK
会被触发,之后我不需要触发
onBlur
事件。检查值是否更改是最好的解决方案。谢谢
@Listen("onBlur = #test")
public void action(Event event) {
    Clients.showNotification(event.getName() + " " + ++counter);
}