Orbeon 表单:通过按钮设置多个单选按钮值

问题描述 投票:0回答:2

我们有许多表格,是维护技术人员要执行的任务清单,例如每年的机动车检查。每个任务都有一个单选按钮,供技术人员确认任务是否完成(例如完成/未完成,或OK/Not OK等),它们都在同一部分形式。

我们希望调用 Action 的按钮将部分中的所有这些单选按钮默认为 OKDone 以加快流程..

我尝试了以下代码,但它设置了所有 Done 值,然后第二条语句清除了 Done 值并设置了 OK 值。我们怎样才能让它同时做到这两点?

<xf:action event="DOMActivate">
  <xf:setvalue xxf:iterate="//SubScn2YearlyMaintenance//*[empty(*)]" value="if (//* != '') then 'Done' else ."/>                                             
  <xf:setvalue xxf:iterate="//SubScn2YearlyMaintenance//*[empty(*)]" value="if (//* != '') then 'OK' else ."/>                                        
</xf:action>  

我们知道我们可以单独设置每个字段,但是可以执行超过 50 个任务,如果可能的话,我们希望一些简单的代码来设置所有完成/确定值。

例子形式

非常感谢。

皮特A

orbeon
2个回答
0
投票

根据您的示例,我建议对每个单选按钮使用相同的值。您只能在标签上有所不同。那么你只能使用一个

xf:setvalue
.

第二种解决方案是在所有单选按钮的名称中使用相同的前缀/后缀,并在您的 XPath 函数中使用

starts-with()
ends-with()
。 当重命名带有前缀“OK”的 OK/Not Ok 单选按钮时,结果可能如下所示:

<xf:setvalue xxf:iterate="//SubScn2YearlyMaintenance//*[starts-with(name(),'OK') and empty(*)]"


0
投票

这些方面的东西对你有用吗?

<xf:action event="DOMActivate">
    <xf:setvalue
        xxf:iterate="
            //SubScn2YearlyMaintenance
            //*[
                empty() and 
                exists(
                    xxf:itemset(concat(local-name(), '-control'), 'xml')
                    //item/value[. = ('checked')]
                )
            ]"
        value="if (// != '') then 'checked' else ."/>
</xf:action>

PS:这个答案已经根据 OP 的反馈进行了更新。

© www.soinside.com 2019 - 2024. All rights reserved.