使用Orbeon Form Builder,我可以将所选文本从下拉列表复制到另一个文本字段而不是值吗?

时间:2018-06-19 07:17:18

标签: forms dropdown orbeon

我想将文本从下拉列表复制到单独的文本字段,而不是值。当我有多种语言版本时,这就成了一个问题。因为所有下拉语言版本都可以有不同的标签(根据您选择的语言设置),但都具有相同的值。

例如,如果我有不同语言的颜色下拉(按您选择的语言更改),我想在单独的文本字段中显示所选颜色(无论用哪种语言)。

这可能吗?我正在使用Orbeon Forms 2016.3。

1 个答案:

答案 0 :(得分:1)

您可以使用xxf:itemset()函数来执行此操作,该函数告诉您作为选择控件的用户可以做出的所有可能选择,包括标签和相应的值。

但是,请注意,刷新后会重新评估项集,这意味着该函数不能在计算或其他公式中可靠地使用:它只能在响应事件时使用,您可以在事件中执行此操作。 custom model

  1. 我假设您的表单是名为color的选择控件和名为color-label的选择控件。
  2. 为您的自定义模型创建文件,例如WEB-INF/resources/forms/resources/model.xml,内容如下。

    <xf:model xmlns:xf="http://www.w3.org/2002/xforms">
        <xf:setvalue
            observer="color-control"
            event="xforms-enabled xforms-value-changed"
            ref="xxf:binding('color-label-control')"
            value="
                if (xxf:binding('color-control') = '')
                then ''
                else
                    xxf:itemset('color-control', 'xml')/itemset/choices/item[
                        value = xxf:binding('color-control')
                    ]/label"/>
    </xf:model>
    
  3. 通过将以下属性添加到properties-local.xml中来引用您的自定义模型:

    <property 
        as="xs:anyURI"
        name="oxf.fr.detail.model.custom.*.*"
        value="oxf:/forms/resources/model.xml"/>`