2016-05-25 5 views
1

私は2つのイベントをリッスンするテキストボックスとメソッドを持っています。ZK複数のイベントを処理するにはどうすればよいですか?

<textbox id="test" /> 

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

テキストボックスでEnterキーを押すと、イベント "onOK"がトリガーされます。大丈夫です。 しかし、私がTexboxからフォーカスを失うと、イベント "onBlur"もトリガーされます。その場合、私のメソッド「アクション」が2回呼び出されるので、悪いことです。 この2番目のイベントをキャンセルするにはどうすればよいですか?

答えて

1

I created a fiddle where you can test it

しかし、いくつかの解明:ZULで

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

OnOK呼び出しは、onBlurイベントに転送され、それが後にonBlurイベントになることを言います。 Javaコードで

:OnOK呼び出しはonBlurイベントに転送されるため

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

は、だから今、私たちは唯一のonBlurイベントをリッスン。

これは、あなたのケースatmにはまだ役立ちませんか?

イベントを呼び出すことはできません=>宣言すると、トリガーされます。
しかし、あなたの状況をどう対処することができますか:

あなたの作曲家に文字列を保持し、それを新しい値でチェックしてください。
=>等しい場合は、イベントは既にトリガーされているか、変更されていません。
もしそれが等しくなければ=>あなたのものをしてください。

+0

値が変更されたかどうかを確認するのが最適な解決方法です。ありがとう。 – Andrii

1

あなたはテキストボックスがフォーカスを失ったときにイベントがトリガされることを必要としない場合は、あなたがonBlur部分を削除する必要があります:あなたのコードでは、あなたがやっているだので

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

のid = "test"のテキストボックスにあるたびに、onOkまたはonBlur(フォーカスが失われたときにトリガーされるイベント)のいずれかが行われると、actionメソッドが実行されます。

更新は今

、あなたはテキストボックスがonOKでイベントをトリガすることを必要とする場合は、別のときに2 diferent方法を必要とし、その後、明らかにフォーカス(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... 
} 
+0

私はこれらの両方のイベント 'onOK'と' onBlur'を必要とします。そして、彼らは一つの方法を(同じ行動で)呼び出さなければなりません。 「テキストボックス」に何かを入力してフォーカスを失うと、イベント「onBlur」がトリガされます。それはOKです! しかし、最初に私がEnterを押してしまった後、 'onOK'が後で動かされたとき、' onBlur'イベントがトラブルされる必要はありません。 – Andrii

関連する問題