ZK如何处理多个事件?

时间:2016-05-25 06:22:29

标签: events zk

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

<textbox id="test" />

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

当我在文本框中按Enter键时,会触发事件“onOK”。没关系。 但是当我从Texbox失去焦点时,“onBlur”事件也会被触发。这很糟糕,因为在那种情况下我的方法“动作”被调用两次。 如何取消第二次活动?

2 个答案:

答案 0 :(得分:1)

如果您不需要在文本框失去焦点时触发事件,则必须删除@Listen("onOK = #test") public void action(Event event) { // do something ... } 部分:

@listen

这是因为在您的代码中,您正在使用anotation onOk,每次在文本框中使用id =&#34; test&#34;进行以下任何事件:onBluraction(当焦点丢失时触发的事件),然后执行方法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... } 标记放入两者都有自己的行为和条件,如下:

img#art {
display: block;
margin-right: auto;
margin-left: auto;
width: 100%;
height: 100%;
max-height: 300px;
z-index: -1;

}

img#raw {
    display: block;
    margin-left: auto;
    z-index: 2;
}

img#law {
    display: block;
    margin-right: auto;
    z-index: 1;
}

答案 1 :(得分:1)

您可以将任何活动转发给其他活动:

created a fiddle where you can test it

但有些解释:
在zul:

<textbox id="test" forward="onOK=test.onBlur"/>

什么说onOK将转发给onBlur,稍后它将成为onBlur。

在java代码中:

@Listen("onBlur = #test")
public void action(Event event) {
    Clients.showNotification(event.getName() + " " + ++counter);
}

所以现在我们只收听onBlur,因为onOK被转发到onBlur。

这对你的案件有什么帮助,还没有。

不调用事件=&gt;不可能,如果你宣布它,它将被触发 但是你怎么能处理你的情况:

在作曲家中按住字符串,并使用新值进行检查 如果等于=>事件已经触发,或者没有变化 如果它不等于=&gt;做你的东西。