在xform中向上/向下捕捉箭头

时间:2015-01-25 13:36:19

标签: orbeon xforms

当用户在Orbeon XForms中按下Arrow Down或Up时,如何捕获?

事件'up'和'down'没有捕获,它们不是修饰符,我想不出要捕获的文本。到目前为止的示例调用

 <xforms:action ev:event="keypress" ev:observer="#document" xxforms:modifiers="down">
      ...
 </xforms:action>

1 个答案:

答案 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;

请参阅:http://wiki.orbeon.com/forms/doc/developer-guide/xforms-javascript-integration#TOC-Dispatching-Events