ORBEON.xforms.Document.setValue getValue dispatchEvent如何使用?

时间:2015-05-13 08:11:21

标签: orbeon

我在Orbeon 4.6和4.7上试过这个。

ORBEON.xforms.Document.setValue,getValue或DispatchEvents命令在调用时抛出错误对话框。

感谢有人幸运地让这些工作。

请查看xhtml下面的snipet,当我运行它时,如果我将getValue()更改为setValue()并将名称和值传递为as,则当它应显示“42”时,警报消息显示“undefined”参数系统返回错误:

<xf:instance id="fr-form-instance" xxf:exclude-result-prefixes="#all">
<form>
    <section-1>
        <control-1/>
        <foo>42</foo>
        <bar/>
    </section-1>
</form>
</xf:instance>

.......
<xh:td>
<xf:input id="control-1-control" bind="control-1-bind">
    <xf:label ref="$form-resources/control-1/label"/>
    <xf:hint ref="$form-resources/control-1/hint"/>
    <xf:alert ref="$fr-resources/detail/labels/alert"/>
</xf:input>
<xf:input ref="foo" id="foo">
    <xf:label class="fixed-width">Value of foo:</xf:label>
</xf:input>
<xf:output ref="bar">
    <xf:label class="fixed-width">Value of bar:</xf:label>
</xf:output>
<xf:trigger>
    <xf:label>JavaScript</xf:label>
    <xxf:script ev:event="DOMActivate">
        alert(ORBEON.xforms.Document.getValue("foo"));

    </xxf:script>
</xf:trigger>
</xh:td>

1 个答案:

答案 0 :(得分:1)

它无法正常工作,因为您需要使用HTML中的ID,并且HTML中的ID与控件名称有两种不同:

  1. 表单生成器在名称末尾添加-control以生成ID。
  2. 因为使用Form Runner,控件位于XBL组件内部,这些组件的id以控件的id为前缀。
  3. 因此,如果您的控件在表单生成器中命名为my-control,我建议您使用以下内容在JavaScript中获取其值:

    var control = ORBEON.jQuery('*[id $= "my-control-control"]');
    var value = ORBEON.xforms.Document.getValue(control.attr('id'));