进入按下时ZK方法调用

时间:2013-03-02 13:52:21

标签: textbox onchange zk

我在zk中有一个文本框。如果我按Tab键调用onChanged事件。 当按下输入时,我需要做什么来调用onChange事件?目前,当我按下输入时根本没有发生任何事情。

<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
        }
}

提前致谢。

2 个答案:

答案 0 :(得分:2)

Enter 键会触发ZK中的onOK事件(&#39; O&#39; K&#39;大写)。

ZK文档讨论了详细信息here

使用GenericForwardComposer您可以定义一个事件监听器,如下所示:

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

使用SelectorComposer(在ZK 6.0中引入),您可以像这样定义事件监听器:

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

如果要为多个事件执行单个代码,请查看Event Forwarding。例如..

// 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" />

答案 1 :(得分:0)

试试这个,

<script>
    <![CDATA[

    $( window ).load(function() { 
    if(document.getElementsByClassName('textboxLogin')[0]!=null){
    document.getElementsByClassName('textboxLogin')[0].addEventListener('keyup',
    onKeyUpAcces, false); }


    if(document.getElementsByClassName('textboxLogin')[1]!=null){
        document.getElementsByClassName('textboxLogin')[1].addEventListener('keyup',
        onKeyUpAcces, false); }

    });


    function onKeyUpAcces(e) {
        console.log('onkeyUp');
        if (e.keyCode == 13) {
            if(document.getElementById('f')!=null){
                document.getElementById('f').submit();
            }
        }
    }

    ]]>
</script>