Search code examples
textboxonchangezk

ZK methode call when enter pressed


I have a textbox in zk. If I pressed tab call the onChanged event. What need I do for call onChange event when press enter? Currently when I press enter not happens anything at all.

<textbox id="inputWord" width="200px" apply="com.wb.controlers.WBControler" />

WBControler.java (Extends GenericForwardComposer)

public void onChange$inputWord(Event event) throws Exception {
        Component c = event.getTarget();
        if (c instanceof Textbox) {
            wordTextbox = (Textbox)c;
        }
        if (wordTextbox != null) {
          // do something
        }
}

Thanks in advance.


Solution

  • The Enter key fires the onOK event in ZK (both 'O' and 'K' are uppercase).

    The ZK documentation discusses the details here.

    Using a GenericForwardComposer you would define an event listener like so:

    public void onOK$inputWord(Event event) {
        // do something
    }
    

    Using a SelectorComposer (introduced in ZK 6.0) you would define your event listener like so:

    @Listen(Events.ON_OK + " = #inputWord")
    public void onEnterPressed(Event event) {
        // do something
    }
    

    If you want to execute a single bit of code for multiple events, have a look into Event Forwarding. For example..

    // in your controller
    @Listen("onQuery = #inputWord")
    public void onQuery(Event event) {
        // do something
    }
    
    // in your zul file
    <texbox id="inputWord" forward="onOK=onQuery, onChange=onQuery" />