当用户在Orbeon XForms中按下Arrow Down或Up时,如何捕获?
事件'up'和'down'没有捕获,它们不是修饰符,我想不出要捕获的文本。到目前为止的示例调用
<xforms:action ev:event="keypress" ev:observer="#document" xxforms:modifiers="down">
...
</xforms:action>
答案 0 :(得分:1)
使用此orbeon的按键事件看起来无法做到这一点。同样在javascript中,某些浏览器中的箭头键仅由onkeydown触发,而不是由onkeypress触发。
您可以通过将以下代码放入xf:model或xforms:model(注意:如果您的模型类似于xforms:model,它意味着您使用具有不同命名空间的版本,就像以前的orbeon版本一样,所以将xf:改为xforms:和xxf:改为xxforms:):
<xf:action ev:event="xforms-ready">
<xxf:script>function myKeydown(event) {
var key = event.charCode ? event.charCode : event.keyCode ? event.keyCode : 0;
switch (key) {
case 38:
ORBEON.xforms.Document.dispatchEvent({targetId: 'fr-form-model', eventName: 'up'});
YAHOO.util.Event.preventDefault(event);
break;
case 40:
ORBEON.xforms.Document.dispatchEvent({targetId: 'fr-form-model', eventName: 'down'});
YAHOO.util.Event.preventDefault(event);
break;
}
}
YAHOO.util.Event.addListener(document, "keydown", myKeydown);
</xxf:script>
</xf:action>
<xf:action ev:event="up">
<!-- Call something from here -->
<xf:action ev:event="down">
<!-- Call something from here -->
</xf:action>
如果您想发送另一个事件,请按以下方式调用:
ORBEON.xforms.Document.dispatchEvent({targetId: 'yourTargetId', eventName: 'yourEvent'});
或
ORBEON.xforms.Document.dispatchEvent("yourTargetId", "yourEvent");
注意:根据您使用的Orbeon版本,可能需要将以下内容添加为xf:model属性:xxf:external-events =&#34; up down&#34;