我在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
}
}
提前致谢。
答案 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>