我在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>
答案 0 :(得分:1)
它无法正常工作,因为您需要使用HTML中的ID,并且HTML中的ID与控件名称有两种不同:
-control
以生成ID。因此,如果您的控件在表单生成器中命名为my-control
,我建议您使用以下内容在JavaScript中获取其值:
var control = ORBEON.jQuery('*[id $= "my-control-control"]');
var value = ORBEON.xforms.Document.getValue(control.attr('id'));